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

时间:2013-12-30 13:38:30

标签: c++ opencv image-processing

我想比较Mat与RBG图像(即具有3个通道的Mat)的值与阈值Mat th = [0.2,0.2,0.2],其中Mat th中的每个值对应于每个通道的阈值,即th=[th for Red,th for blue,th for Green]。< / p>

当我宣布为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个通道和非整数的逻辑?

2 个答案:

答案 0 :(得分:2)

我相信您正在寻找CV_32FC3。如果你只想要一个像素,另一个选择就是使用Vec3f。

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

Vec3f th(0.2, 0.2, 0.2);

答案 1 :(得分:0)

在3频道CV_32FC3中使用 CV_64FC3 Mat 进行浮动。


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));