c++ opencv 图片识别
时间: 2023-09-11 21:06:28 浏览: 89
openCV图片识别
3星 · 编辑精心推荐
要使用 C++ 和 OpenCV 进行图片识别,你需要安装 OpenCV 库并了解一些基本概念。以下是一个简单的示例程序,可以识别并在控制台上输出图片中的红色圆形:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读入图片
Mat img = imread("test.jpg");
// 转换为 HSV 格式
Mat hsv;
cvtColor(img, hsv, COLOR_BGR2HSV);
// 提取红色区域
Mat mask1, mask2;
inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);
Mat mask = mask1 | mask2;
// 查找轮廓
vector<vector<Point>> contours;
findContours(mask, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 遍历轮廓
for (size_t i = 0; i < contours.size(); i++) {
// 计算轮廓面积和周长
double area = contourArea(contours[i]);
double perimeter = arcLength(contours[i], true);
// 过滤掉非圆形轮廓
if (area > 1000 && perimeter > 100) {
double circularity = 4 * M_PI * area / (perimeter * perimeter);
if (circularity > 0.8) {
// 输出圆形信息
cout << "Red circle detected!" << endl;
}
}
}
return 0;
}
```
这个程序首先读入一张图片,然后将其转换为 HSV 格式。接着,使用 inRange 函数提取出红色区域,并使用 findContours 函数查找轮廓。最后,遍历所有轮廓,计算面积、周长和圆形度,判断是否为红色圆形。
阅读全文