1

到目前为止,我已经了解到这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

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

4

2 回答 2

1

cv::merge用于将多个 Mat 对象连接到一个 Mat 中,例如您可以Mat_<Vec2f>从 2Mat_<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);
于 2012-09-22T10:43:33.373 回答
0

您可以尝试以下...

cvMerge(my_grayscale_image,NULL,NULL,NULL,my_grayscale_2chan)..
于 2012-09-22T10:03:52.990 回答