OpenCV拆分和合并

时间:2018-06-06 14:19:07

标签: c++ opencv image-processing

我有一个Mat类型的图像,我试图将其分成单独的波段,这样我就可以分别调整每个波段的像素值。当我编写代码时会弹出这个错误"没有匹配函数来调用' cvSplit'"。

Mat image = imread(file,1);
Mat rBand, gBand,bBand;
cvSplit(image, bBand, gBand, rBand, NULL);
imshow("red", rBand);
imshow("blue", bBand);
imshow("green",gBand);

2 个答案:

答案 0 :(得分:3)

如果在创建时没有声明,则mat不允许下标运算符。因此,大多数创建一个Mat表示其中的波段数,因此可以将其拆分。这意味着Bands[0],Bands[1],Bands[2]每个都是单个通道并且是灰度级的。然后,不能获得原始图像必须使用merge函数合并通道。

Mat image = imread(file,1);
Mat Bands[3],merged;
split(image, Bands);
vector<Mat> channels = {Bands[0],Bands[1],Bands[2]};
merge(channels,merged);
imshow("red", Bands[2]);
imshow("blue", Bands[0]);
imshow("green",Bands[1]);
imshow("merged",merged);

答案 1 :(得分:0)

如果cvSplit

,请尝试使用此功能
cv::split