将灰色图像复制到Mat_ <vec2f> </vec2f>类型的第一个通道

时间:2012-09-22 09:05:16

标签: opencv

到目前为止,我已经了解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的第一个通道中。

我希望有人能指出我正确的方向,谢谢。

2 个答案:

答案 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)..