Я хочу сравнить значения Mat с RBG-изображением (т. Mat th = [0.2,0.2,0.2]
Mat с 3-мя каналами) с порогом Mat th = [0.2,0.2,0.2]
где каждое значение в Mat th соответствует порогу для каждого канала, т. Mat th = [0.2,0.2,0.2]
th=[th for Red,th for blue,th for Green]
.
Когда я объявляю его 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);
Используйте тип CV_32FC3
или CV_64FC3
для float в 3-канальном 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));