绿色的hsv
时间: 2023-08-04 16:07:09 浏览: 178
绿色的HSV范围可以根据实际情况进行调整,但通常情况下可以使用以下范围:
- H:35-77
- S:43-255
- V:46-255
以下是使用OpenCV的代码示例,实现绿色的提取:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图像并转换为HSV颜色空间
Mat image = imread("test.jpg");
Mat hsvImage;
cvtColor(image, hsvImage, COLOR_BGR2HSV);
// 定义绿色的HSV值范围
Scalar lowerGreen(35, 43, 46);
Scalar upperGreen(77, 255, 255);
// 提取绿色部分
Mat greenMask;
inRange(hsvImage, lowerGreen, upperGreen, greenMask);
// 形态学操作
Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
morphologyEx(greenMask, greenMask, MORPH_OPEN, kernel);
// 轮廓检测
vector<vector<Point>> contours;
findContours(greenMask, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
// 筛选轮廓
vector<vector<Point>> greenContours;
for (int i = 0; i < contours.size(); i++)
{
double area = contourArea(contours[i]);
if (area > 1000)
{
greenContours.push_back(contours[i]);
}
}
// 绘制轮廓
Mat result = image.clone();
drawContours(result, greenContours, -1, Scalar(0, 255, 0), 2);
// 显示结果
imshow("image", image);
imshow("result", result);
waitKey(0);
return 0;
}
```
其中test.jpg是需要进行绿色识别的图像,可以根据实际情况进行修改。在代码中,提取绿色部分使用了inRange函数,形态学操作使用了morphologyEx函数,轮廓检测使用了findContours函数,轮廓筛选使用了contourArea函数。最终结果会在result窗口中显示出来。
阅读全文