我想比较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个通道和非整数的逻辑?
答案 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));