opencv颜色识别C++
时间: 2024-01-27 21:15:22 浏览: 99
以下是使用OpenCV进行颜色识别的C++示例代码:
```cpp
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat image = imread("image.jpg");
// 检查图像是否成功加载
if (image.empty())
{
cout << "无法加载图像" << endl;
return -1;
}
// 转换图像为HSV颜色空间
Mat hsvImage;
cvtColor(image, hsvImage, COLOR_BGR2HSV);
// 定义颜色范围
Scalar lowerBound(20, 100, 100); // 最低颜色阈值
Scalar upperBound(30, 255, 255); // 最高颜色阈值
// 创建掩膜,将在指定颜色范围内的像素设置为白色,其他像素设置为黑色
Mat mask;
inRange(hsvImage, lowerBound, upperBound, mask);
// 对掩膜进行形态学去噪声处理
Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
morphologyEx(mask, mask, MORPH_OPEN, kernel);
// 查找轮廓
vector<vector<Point>> contours;
findContours(mask, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 遍历轮廓并绘制矩形框
for (size_t i = 0; i < contours.size(); i++)
{
Rect boundingRect = cv::boundingRect(contours[i]);
rectangle(image, boundingRect, Scalar(0, 255, 0), 2);
}
// 显示结果图像
imshow("Color Detection", image);
waitKey(0);
return 0;
}
```
这段代码使用OpenCV库进行颜色识别。它首先读取一张图像,然后将图像转换为HSV颜色空间。接下来,根据指定的颜色范围创建一个掩膜,将在该范围内的像素设置为白色,其他像素设置为黑色。然后,对掩膜进行形态学去噪声处理,以消除噪声。最后,通过查找轮廓并绘制矩形框来标记识别到的颜色区域。最终,显示结果图像。
阅读全文