声明一个与openCV具有相同值的矩阵



我声明了一个矩阵,它包含的值等于1:cv::Mat::ones(width, height, CV_8U);

现在我要乘以一个常数,我的意思是,一个值等于a =0.3的矩阵然后我写道:简历::垫mat_cal =简历::垫::的(宽度、高度、CV_8U) *;

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

解决方案吗?

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

如果我没记错的话,当乘以一个标量时,可以这样做。两个矩阵相乘的方式不同:

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

结果吗?0

它只是普通的整数四舍五入。

如果你想要一个双精度或浮点值的Mat,首先使用正确的类型:

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

或:

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

相关内容

  • 没有找到相关文章

最新更新