opencv-常用小知识

时间:2023-01-20 09:34:25

类型、位数、通道数

  • Unsigned 8bits
    CvMat数据结构参数:CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4
变量类型 空间大小 范围 其他
uchar 8bits 0~255 默认
unsigned char 8bits 0~255
  • Signed 8bits
    CvMat数据结构参数:CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4
变量类型 空间大小 范围 其他
char 8bits -128~127
  • Unsigned 16bits
    CvMat数据结构参数:CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4
变量类型 空间大小 范围 其他
ushort 16bits 0~65535 默认
unsigned short int 16bits 0~65535
  • Signed 16bits
    CvMat数据结构参数:CV_16SC1,CV_16SC2,CV_16SC3,CV_16SC4
变量类型 空间大小 范围 其他
short int 16bits -32768~32767 (short)
  • Signed 32bits
    CvMat数据结构参数:CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4
变量类型 空间大小 范围 其他
int 32bits -2147483648~2147483647 (long)
  • Float 32bits
    CvMat数据结构参数:CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4
变量类型 空间大小 范围 其他
float 32bits 1.1810-38~3.401038
  • Double 64bits
    CvMat数据结构参数:CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4
变量类型 空间大小 范围 其他
double 64bits 2.2310-308~1.7910308
  • Unsigned 1bit
    IplImage数据结构参数:IPL_DEPTH_1U
变量类型 空间大小 范围 其他
bool 1bit 0~1

参考

OpenCV Mat数据类型及位数总结_zhliang_新浪博客

备注:


x, y坐标和行列关系

在opencv的图像坐标系中,坐标原点为左上角, x坐标轴指向右方, y坐标轴指向下方。

row == height == Point.y
col == width  == Point.x
Mat::at(Point(x, y)) == Mat::at(y, x)
cv::Mat image(row_num, col_num, CV_8UF1, cv::Scalar(0))
image.at<uchar>(row, col)

此时使用.at(row, col)访问mat中元素, row代表行,也是height和y坐标的值, 不是x坐标的值。

参考

openCV坐标系与row&col的关系 (Mat::at(x,y)和Mat::at(Point(x, y))的区别) - hyqsong的专栏 - CSDN博客


opencv之type()函数返回值对应表

cv::Mat 类的对象有一个成员函数 type() 用来返回矩阵元素的数据类型,返回值是 int 类型,不同的返回值代表不同的类型。

int Mat::type() const

返回值与具体类型对应关系表:

C1 C2 C3 C4
CV_8U 0 8 16 24
CV_8S 1 9 17 25
CV_16U 2 10 18 26
CV_16S 3 11 19 27
CV_32S 4 12 20 28
CV_32F 5 13 21 29
CV_64F 6 14 22 30

注:表头的 C1, C2, C3, C4 指的是通道(Channel)数

参考

[2015-04-30-确定 OpenCV 矩阵元素的数据类型 - 简书](