使用openCV声明具有相同值的Matrix

时间:2013-03-15 11:22:32

标签: c++ visual-studio-2010 opencv

我已声明一个包含等于1的值的Matrix:     cv :: Mat mat_cal = cv :: Mat :: ones(width,height,CV_8U);

现在我希望乘以一个常数,我的意思是,一个矩阵的值等于A = 0.3 然后我写道:     cv :: Mat mat_cal = cv :: Mat :: ones(width,height,CV_8U)* A;

但结果呢?矩阵0 0 0 0 0 0 0 0 .....

任何解决方案?

2 个答案:

答案 0 :(得分:1)

您的问题的一部分是您的矩阵类型是CV_8U,这是一个8位无符号整数 - 因此0.3被截取到0。而是将其设置为CV_32F(32位浮点)。

另外,如果我记得,当乘以标量时,你会这样做。乘以2个矩阵的方式不同:

float A = 0.3;
cv::Mat mat_cal = cv::Mat::ones(width, height, CV_32F)*A;

答案 1 :(得分:0)

char i = 1;
i *= 0.3;

结果? 0

它只是简单的旧整数舍入。

如果你想要一个具有double或float值的Mat,请首先使用正确的类型:

cv::Mat::ones(width, height, CV_32F)*0.3f; // float

或:

cv::Mat::ones(width, height, CV_64F)*0.3;  // double