如何在 opencv 中声明存储 0 到 1 之间的浮点值的 Mat

How to declare Mat that stores float values between 0 and 1 in opencv

本文关键字:之间 Mat opencv 存储 声明      更新时间:2023-10-16

我想将带有RBG图像的垫子(即具有3个通道的垫子)的值与阈值进行比较Mat th = [0.2,0.2,0.2]其中每个垫子th值对应于每个通道的阈值,即 th=[th for Red,th for blue,th for Green] .

当我宣布th为Mat th(3,1,CV_32F,Scalar(0.2,0.2,0.2));cout<<th;的输出显示th=[0,0,0] 。我在声明数据类型时犯了什么错误?对于 3 个通道,我需要将其声明为 Mat th(1,1,CV_32UC3,Scalar(0.2,0.2,0.2)) 吗?哪种数据类型有助于捕获 3 个通道和非整数的逻辑?

我相信

你正在寻找CV_32FC3。另一种选择是如果您只需要一个像素,请使用 Vec3f。

Mat th(1,1,CV_32FC3,Scalar(0.2,0.2,0.2));

Vec3f th(0.2, 0.2, 0.2);

在 3 通道Mat中使用类型 CV_32FC3 CV_64FC3 进行浮点数。


Mat th(3,1,CV_32FC3,Scalar(0.2,0.2,0.2));

Mat th(3,1,CV_64FC3,Scalar(0.2,0.2,0.2));