我有一个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);
答案 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