cv::Mat构造函数
时间: 2023-09-19 16:12:31 浏览: 92
cv::Mat是OpenCV库中表示图像的基本数据类型,它是一个矩阵,可以用来存储和操作图像像素数据。cv::Mat有多个构造函数,以下是其中一些常用的:
1. `cv::Mat()`:默认构造函数,创建一个空的矩阵。
2. `cv::Mat(int rows, int cols, int type)`:指定行数、列数和像素类型创建一个矩阵。
3. `cv::Mat(cv::Size size, int type)`:指定尺寸和像素类型创建一个矩阵。
4. `cv::Mat(int rows, int cols, int type, const void* data, size_t step = AUTO_STEP)`:指定行数、列数、像素类型、数据指针和步长创建一个矩阵。
5. `cv::Mat(cv::Size size, int type, const void* data, size_t step = AUTO_STEP)`:指定尺寸、像素类型、数据指针和步长创建一个矩阵。
6. `cv::Mat(cv::InputArray arr)`:从已有的Mat、UMat、MatExpr或其他可输入到cv::InputArray中的数据创建一个矩阵。
其中,像素类型type可以是CV_8U、CV_8S、CV_16U、CV_16S、CV_32S、CV_32F、CV_64F等常用类型。步长step是指每一行像素数据所占的字节数,可以自动计算也可以手动指定。
相关问题
cv::Mat构造HSV
cv::Mat是OpenCV库中用于表示图像的数据结构,而HSV是一种常用的颜色空间模型,用于描述颜色的色调(Hue)、饱和度(Saturation)和亮度(Value)。
要构造一个HSV图像,可以使用cv::cvtColor函数将原始图像转换为HSV颜色空间。具体步骤如下:
1. 首先,创建一个cv::Mat对象来存储原始图像,假设为inputImage。
2. 创建一个新的cv::Mat对象来存储HSV图像,假设为hsvImage。
3. 使用cv::cvtColor函数将inputImage转换为HSV颜色空间,并将结果存储在hsvImage中。函数调用如下:
cv::cvtColor(inputImage, hsvImage, cv::COLOR_BGR2HSV);
完成上述步骤后,hsvImage就是构造好的HSV图像。
定义完cv::Mat后为什么说这个是cv::Mat::Mat
当你在OpenCV中定义一个`cv::Mat`对象时,实际上是创建了一个矩阵对象实例,该对象是`cv::Mat`类的一个实例。`cv::Mat::Mat`是一个构造函数,用于初始化一个新的`cv::Mat`对象,它可以接受多种参数,比如矩阵的维度、大小、类型等信息。例如:
```cpp
cv::Mat myMatrix(5, 5, CV_8UC3); // 创建一个5x5的RGB图像矩阵
// 或者
cv::Mat myMatrix = cv::imread("image.jpg"); // 从文件加载图像到矩阵
```
在这个例子中,`myMatrix`就是对`cv::Mat`类的一个实例化操作,并且通过`cv::Mat::Mat`构造函数指定了矩阵的初始状态。这个构造函数可以让你直接传递必要的参数来创建所需的矩阵。
阅读全文