到目前为止,我已经了解到merge()
是将特定 channel 从源复制到目标的一种选择,但是我似乎无法完全理解如何实现此目的。
我的示例代码:
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
的第一个通道中。我希望有人能指出正确的方向,谢谢。
最佳答案
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);
关于opencv - 将灰色图像复制到Mat_ <Vec2f>类型的第一个 channel ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12542418/