Как объявить Mat, который хранит значения с плавающей точкой от 0 до 1 в opencv

0

Я хочу сравнить значения 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-х каналов и нецелых чисел?

  • 1
    Похоже, ваш вопрос не завершен.
  • 0
    Нижняя часть не отправляется, поэтому пришлось отправить ее как часть кода. Я надеюсь, что вопрос разборчиво ....
Теги:
opencv
image-processing

2 ответа

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

Используйте тип 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));
  • 0
    Да, спасибо, но я думаю, что я должен изменить его как th (1,1, CV_64FC3, Scalar (0.2,0.2,0.2)), потому что мне нужно только одно значение каждого канала. Спасибо !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню