OpenCV红色圆形检测c++程序
时间: 2023-09-03 12:08:50 浏览: 97
以下是使用OpenCV在C++中检测红色圆形的基本代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图片
Mat image = imread("test.jpg", IMREAD_COLOR);
if (image.empty())
{
cout << "Could not open or find the image" << endl;
return -1;
}
// 转换为HSV颜色空间
Mat hsv_image;
cvtColor(image, hsv_image, COLOR_BGR2HSV);
// 设定红色的HSV阈值范围
Scalar lower_red(0, 100, 100);
Scalar upper_red(10, 255, 255);
// 通过inRange函数提取红色区域
Mat red_mask;
inRange(hsv_image, lower_red, upper_red, red_mask);
// 使用霍夫圆检测函数
vector<Vec3f> circles;
HoughCircles(red_mask, circles, HOUGH_GRADIENT, 1, red_mask.rows/8, 200, 20, 0, 0);
// 绘制检测到的圆
for (size_t i = 0; i < circles.size(); i++)
{
Vec3i c = circles[i];
Point center = Point(c[0], c[1]);
int radius = c[2];
circle(image, center, radius, Scalar(0, 0, 255), 3, LINE_AA);
}
// 显示结果
imshow("Red Circles Detected", image);
waitKey();
return 0;
}
```
该程序的主要步骤如下:
1. 读取图片;
2. 将图片转换为HSV颜色空间;
3. 设定红色的HSV阈值范围;
4. 提取红色区域;
5. 使用霍夫圆检测函数检测圆形;
6. 绘制检测到的圆形;
7. 显示结果。
请注意,这只是一个基本示例,您可能需要根据您的应用程序进行更改和调整。
阅读全文