2010-05-23 143 views
1

我想找到最简单的方法来添加,用opencv 2.0 cv::Mat类减去标量值。OpenCV乘标量和矩阵

大部分现有的功能只允许矩阵矩阵和矩阵标量运算。

我正在寻找一个标量矩阵操作。

我正在通过创建一个具有相同标量值的临时矩阵并进行所需的算术运算来完成它。下面的示例..

Mat M(Size(100,100), CV_8U); 
Mat temp = Mat::ones(100, 100, CV_8U)*255; 
M = temp-M; 

但我觉得应该有更好/更简单的方法来做到这一点。

有什么建议吗?

回答

0

也许这是2.1和目前主干版本之间2.1或某处的功能,但能正常工作对我来说:

Mat cc = channels[k]; 
    double fmin,fmax; 
    cv::minMaxLoc(cc, &fmin, &fmax); 
    if(fmax > 1.0) 
     fmax = 255.0 ; 
else 
fmax = 1.0; 
cc = (cc/(fmax + 1e-9)); 

渠道是来自:

channels = vector<Mat>(3); 
cv::split(img, channels); 

所以,肯定只是使用标量表达式,至少在2.1 /当前的SVN分支中;如果你在2.0中尝试上述操作会发生什么?