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

Adi*_*vit 1 opencv image-processing

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

img *= cv::Scalar(1.5,0.5,2.1);
Run Code Online (Sandbox Code Playgroud)

我想用不同的浮点因子来缩放每个通道.
有一个简单的方法吗?

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

有什么建议?

Mik*_*iki 6

你可以使用multiply:

cv::Mat3b m = ... ;
cv::multiply(m, cv::Scalar(2, 3, 4), m);
Run Code Online (Sandbox Code Playgroud)

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

cv::Mat3b m = ... ;
m = m.mul(cv::Scalar(2, 3, 4));
Run Code Online (Sandbox Code Playgroud)