OpenCV Mat类型的区别

时间:2013-10-08 13:24:36

标签: opencv

OpenCV cv::Mat类型之间有什么区别?

更具体地说,CV_64FCV_64FC1CV_64FC2之间有什么区别?当我创建一个cv::Mat个值为double的对象时,我应该使用哪一个?

1 个答案:

答案 0 :(得分:27)

Cx部分在图片中显示频道数。也就是说,CV_64FC1类型的图像是简单的灰度图像,只有1个通道:

image[i, j] = 0.5

虽然CV_64F3类型的图像是带有3个通道的彩色图像:

image[i, j] = (0.5, 0.3, 0.7)

(在C ++中,您可以将单个像素检查为image.at<double>(i, j)

CV_64FCV_64FC1相同。因此,如果您只需要2D矩阵(即单通道),您可以使用CV_64F


修改

更一般地说,Mat对象的类型名称由几个部分组成。以下为CV_64FC1的示例:

  • CV_ - 这只是一个前缀
  • 64 - 每个基本矩阵元素的位数(例如灰度图像中的像素值或BGR图像中的单色元素)
  • F - 基本元素的类型。在这种情况下,它为F浮动,但也可以是S(已签名)或U(未签名)
  • Cx - 我之前概述的图片中的频道数