cv::Merge creates a 4 channel image instead of 3 channel (Bug #972)
Description
cv::merge doesn't work properly when attempting to combine 3 1-Channel matrices. You'd expect a 3 channel matrix to be created. However, a 4 channel matrix is returned instead.
Patrick, assigning to you for now since you might be able to add more details. You can reassign it to whoever is appropriate after.
Associated revisions
Merge pull request #972 from jet47:mog2-params-bug-2168
Merge remote-tracking branch 'origin/2.4'
Original pull requests:
#996 from jet47:gpu-nvcuvid-libraries
#995 from jet47:fix-bug-2985
#999 from snosov1:unreliable-results-fix
#1005 from alekcac:doc_fix
#1004 from jet47:fix-bug-3068
#987 from jet47:bug-3085-fix
#969 from pengx17:2.4_binary_cache
#929 from dominikrose:mingw-libdc1394-2-windows
#1000 from ivan-korolev:fix_sift_bug_2892
#1001 from ivan-korolev:fix_stitching_bug_2405
#998 from asmorkalov:android_cmake_mips_fix
#993 from ivan-korolev:fix_videostab_bug_3023
#988 from snosov1:3071-fix
#986 from pengx17:2.4_initiated_context
#982 from pengx17:2.4_fix_two_bugs
#981 from SeninAndrew:ximea_camera_support_fix
#991 from asmorkalov:android_javadoc_fix
#972 from jet47:mog2-params-bug-2168
#980 from SpecLad:include-config
#973 from pengx17:2.4_oclclahe
#903 from aks2:2.4
#968 from asmorkalov:android_na_cproj_fix
#971 from SpecLad:matchers-ctor
#970 from asmorkalov:dshow_valid_check_fix
#965 from apavlenko:fix_java_empty_mats
Conflicts:
cmake/OpenCVModule.cmake
modules/core/src/matmul.cpp
modules/gpu/CMakeLists.txt
modules/ocl/include/opencv2/ocl/ocl.hpp
modules/ocl/perf/perf_imgproc.cpp
modules/ocl/src/imgproc.cpp
modules/ocl/src/initialization.cpp
modules/stitching/src/matchers.cpp
modules/video/src/video_init.cpp
modules/videostab/src/global_motion.cpp
History
Updated by Vadim Pisarevsky almost 14 years ago
the bug can not be reproduced.
Here is the sample code.
#include "opencv2/core/core.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main(int, char**)
{
Mat a(480, 640, CV_8U), b(a.size(), a.type()), c(a.size(), a.type());
Mat planes[] = {a, b, c}, d;
merge(planes, 3, d);
cout << d.channels() << endl;
return 0;
}
- Status changed from Open to Done
- (deleted custom field) set to worksforme