到目前为止,我已经了解merge()
是将特定频道从源复制到目的地的选项,但我似乎无法完全理解如何实现这一点。
我的示例代码:
Mat_<float> my_grayscale_image = load_image(some_image, CV_LOAD_IMAGE_GRAYSCALE);
Mat_<Vec2f> my_grayscale_2chan;
所以基本上我想将灰色图像my_grayscale_image
复制到新的2通道图像my_grayscale_2chan
的第一个通道中。
我希望有人能指出我正确的方向,谢谢。
答案 0 :(得分:1)
cv::merge
用于将多个Mat对象连接到单个Mat中,例如您可以从2 Mat_<Vec2f>
Mat_<float>
Mat_<float> first, second;
Mat_<Vec2f> result;
Mat tmp[] = { first, second };
merge(tmp, sizeof(tmp)/sizeof(Mat), result);
要将频道复制到现有的Mat对象,您可以使用通用mixChannels功能。或者你的案例有一个无证的简写:
//void cv::insertChannel(InputArray _src, InputOutputArray _dst, int coi)
insertChannel(my_grayscale_image, my_grayscale_2chan, 0);
答案 1 :(得分:0)
你可以试试以下......
cvMerge(my_grayscale_image,NULL,NULL,NULL,my_grayscale_2chan)..