Чтобы быть более конкретным, в чем разница между CV_64F и CV_64FC1 или CV_64FC2? Какой из них следует использовать, когда я создаю объект cv::Mat, который будет иметь значения double?
Ответ 1
Cx часть показывает количество каналов в изображении. То есть образ типа CV_64FC1 является простым полутоновым изображением и имеет только 1 канал:
image[i, j] = 0.5
а изображение типа CV_64F3 - цветное изображение с тремя каналами:
image[i, j] = (0.5, 0.3, 0.7)
(в С++ вы можете проверить отдельные пиксели как image.at<double>(i, j))
CV_64F совпадает с CV_64FC1. Поэтому, если вам нужна только 2D-матрица (т.е. Одноканальная), вы можете просто использовать CV_64F
ИЗМЕНИТЬ
В общем случае имя типа объекта Mat состоит из нескольких частей. Здесь пример для CV_64FC1:
CV_ - это только префикс
64 - количество бит на базовый матричный элемент (например, значение пикселя в изображении в оттенках серого или одноцветный элемент в изображении BGR)
F - тип базового элемента. В этом случае он F для float, но может также быть S (подписанный) или U (без знака)
Cx - количество каналов в изображении, как я изложил ранее