c++中opencv的Mat函数的用法
时间: 2023-04-06 19:03:58 浏览: 134
Mat是OpenCV中最基本的数据结构之一,用于表示图像或矩阵。它可以存储任意维度、任意类型的数据。Mat的用法包括创建、读取、修改、显示和保存图像等。你可以使用Mat的构造函数来创建一个空的Mat对象,也可以使用imread函数从文件中读取图像并存储在Mat对象中。Mat对象的数据可以通过at函数或指针访问和修改。最后,你可以使用imshow函数将Mat对象显示在屏幕上,也可以使用imwrite函数将Mat对象保存到文件中。
相关问题
C++opencv中findContours函数用法
在C++的OpenCV中,findContours函数用于查找图像中的轮廓。其函数原型如下:
```cpp
void findContours(InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset = Point());
```
其中,
- InputOutputArray image:输入图像,必须为8位单通道二进制图像。
- OutputArrayOfArrays contours:输出轮廓,为一个向量类型,包含所有检测到的轮廓。
- OutputArray hierarchy:轮廓的层次结构,可不传入该参数。
- int mode:轮廓检索模式,可取值为RETR_EXTERNAL、RETR_LIST、RETR_CCOMP和RETR_TREE。
- int method:轮廓逼近方法,可取值为CHAIN_APPROX_NONE、CHAIN_APPROX_SIMPLE、CHAIN_APPROX_TC89_L1和CHAIN_APPROX_TC89_KCOS。
- Point offset:轮廓点的可选偏移量。
例如,下面的代码使用findContours函数查找图像中的轮廓并在图像中绘制出来:
```cpp
Mat image = imread("example.jpg", IMREAD_GRAYSCALE);
Mat binary;
threshold(image, binary, 100, 255, THRESH_BINARY);
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(binary, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point());
Mat result = Mat::zeros(image.size(), CV_8UC3);
for (size_t i = 0; i < contours.size(); i++) {
drawContours(result, contours, i, Scalar(0, 0, 255), 2, 8, hierarchy);
}
imshow("result", result);
```
其中,先使用threshold函数将图像二值化,然后使用findContours函数查找轮廓,并使用drawContours函数将轮廓绘制在新的图像上,最后显示结果图像。
OpenCV C++函数用法
OpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。下面是一些常用的OpenCV C++函数用法的介绍:
1. cv::imread:用于读取图像文件,并将其加载到内存中。函数原型如下:
cv::Mat cv::imread(const std::string& filename, int flags);
阅读全文