在OpenCV中扩展通道的简单方法

时间:2017-08-09 13:03:58

标签: opencv image-processing

似乎给定一个多通道图像img我不能这样做:

img *= cv::Scalar(1.5,0.5,2.1);

我想用不同的 float 因子缩放每个频道 有一个简单的方法吗?

可以使用cv::transform(),但这似乎有点过分(我显然也不想手动显式迭代在所有像素上。)

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

您可以使用multiply

cv::Mat3b m = ... ;
cv::multiply(m, cv::Scalar(2, 3, 4), m);

或者,正如@AdiShavit所建议的那样:

cv::Mat3b m = ... ;
m = m.mul(cv::Scalar(2, 3, 4));