c++ mat 初始化
时间: 2024-10-14 18:12:01 浏览: 9
在C++中,`Mat`是OpenCV中用于表示二维数组的数据结构,初始化一个`Mat`有多种方法:
1. **空矩阵**:
```cpp
cv::Mat emptyMat;
```
2. **固定大小的零矩阵**:
```cpp
cv::Mat zeros(5, 5, CV_8UC1); // 5x5的单通道8位无符号整数矩阵
```
或者更简洁地:
```cpp
cv::Mat zeros(5, 5);
```
3. **预分配内存矩阵**:
```cpp
cv::Mat allocatedMat(500, 600, CV_8UC3); // 500x600的3通道8位无符号整数矩阵
```
4. **从数据加载**:
```cpp
cv::Mat matrixFromData(int rows, int cols, const uchar* data, int type);
```
例如,从文件读取图像:
```cpp
cv::Mat img = cv::imread("image.jpg");
```
5. **从已存在的矩阵复制**:
```cpp
cv::Mat dest = src.clone(); // 深度拷贝
```
6. **动态分配和填充数据**:
```cpp
Mat matrix(rows, cols, type, Scalar(value)); // 使用默认颜色(例如0)
Mat matrix(rows, cols, type, data, step); // 从特定数据源填充
```
注意,`type`参数用于指定矩阵的元素类型(如`CV_8U`代表8位无符号整数,`CV_32F`代表32位浮点数),`Scalar`用于指定初始值。
阅读全文