Matrix OpenCV乘法标量和矩阵

Matrix OpenCV乘法标量和矩阵,matrix,opencv,math,scalar,operation,Matrix,Opencv,Math,Scalar,Operation,我正试图用opencv 2.0cv::Mat类找到最简单的加、减标量值的方法 大多数现有函数只允许矩阵和矩阵标量运算 我在找一个标量矩阵运算 目前,我正在创建一个具有相同标量值的临时矩阵,并执行所需的算术运算。下面的例子。。 材料M(尺寸(100100),CV_8U); 材料温度=材料:一(100,100,CV_8U)*255; M=温度-M; 但我认为应该有更好/更简单的方法来做 有什么建议吗?不能从int或double初始化Mat表达式。解决方案是使用cv::Scalar,即使对于单通道

我正试图用opencv 2.0
cv::Mat
类找到最简单的加、减标量值的方法

大多数现有函数只允许矩阵和矩阵标量运算

我在找一个标量矩阵运算

目前,我正在创建一个具有相同标量值的临时矩阵,并执行所需的算术运算。下面的例子。。

材料M(尺寸(100100),CV_8U); 材料温度=材料:一(100,100,CV_8U)*255; M=温度-M;
但我认为应该有更好/更简单的方法来做


有什么建议吗?

不能从int或double初始化Mat表达式。解决方案是使用cv::Scalar,即使对于单通道矩阵:

Mat M = Mat::ones(Size(100, 100), CV_8U);
M = Scalar::all(255) - M;

有关可能的Mat表达式的列表,请参阅。

不能从int或double初始化Mat表达式。解决方案是使用cv::Scalar,即使对于单通道矩阵:

Mat M = Mat::ones(Size(100, 100), CV_8U);
M = Scalar::all(255) - M;

有关可能的Mat表达式的列表,请参阅。

可能这是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 );
通道=向量(3);
cv::分割(img,通道);

所以,请确保只使用标量表达式,至少在2.1/当前SVN分支中;如果您在2.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 );
通道=向量(3);
cv::分割(img,通道);

所以,请确保只使用标量表达式,至少在2.1/当前SVN分支中;如果您在2.0中尝试上述操作,会发生什么情况?

我如何在java中实现它