Arp*_*hah 14 scalar opencv matrix multiplication scale
我一直在努力实现一些非常微不足道的东西,而且在Matlab中是微不足道的.
我想简单地实现以下目标:
cv::Mat sample = [4 5 6; 4 2 5; 1 4 2];
sample = 5*sample;
Run Code Online (Sandbox Code Playgroud)
之后的样本应该是:
[20 24 30; 20 10 25; 5 20 10]
Run Code Online (Sandbox Code Playgroud)
我曾尝试scaleAdd,Mul,Multiply和既不允许标量乘法器及所需要的相同的"尺寸和类型"的矩阵.在这种情况下,我可以创建一个矩阵,然后使用scale参数,但这看起来非常无关紧要
任何直接简单的方法都会很棒!
Aur*_*ius 19
事实上,OpenCV支持乘以标量值乘以重载operator*.但是,您可能需要正确初始化矩阵.
float data[] = {1 ,2, 3,
4, 5, 6,
7, 8, 9};
cv::Mat m(3, 3, CV_32FC1, data);
m = 3*m; // This works just fine
Run Code Online (Sandbox Code Playgroud)
如果您主要对数学运算感兴趣,那么使用起来会cv::Matx更容易一些:
cv::Matx33f mx(1,2,3,
4,5,6,
7,8,9);
mx *= 4; // This works too
Run Code Online (Sandbox Code Playgroud)
对于 java 来说,没有运算符重载,但 Mat 对象通过 ConvertTo 方法提供了功能。
Mat dst= new Mat(src.rows(),src.cols(),src.type());
src.convertTo(dst,-1,scale,offset);
Run Code Online (Sandbox Code Playgroud)