使用C++编写,利用opencv提取图片中特定颜色范围的区域,并显示这个区域的位置范围
时间: 2023-05-22 19:00:52 浏览: 167
基于openCV的识别特定颜色区域
5星 · 资源好评率100%
你可以使用 OpenCV 库中的函数 cv::inRange() 来提取特定颜色范围的区域。以下是一个示例代码:
```c
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat image = cv::imread("image.jpg"); // 读取图片
cv::Mat hsv_image;
cv::cvtColor(image, hsv_image, cv::COLOR_BGR2HSV); // 转换为 HSV 颜色空间
cv::Scalar lower_bound(20, 100, 100); // 设置颜色范围的下界
cv::Scalar upper_bound(30, 255, 255); // 设置颜色范围的上界
cv::Mat mask;
cv::inRange(hsv_image, lower_bound, upper_bound, mask); // 提取颜色范围内的区域
cv::Rect bounding_rect = cv::boundingRect(mask); // 获取包围矩形
cv::rectangle(image, bounding_rect, cv::Scalar(0, 255, 0), 2); // 在原图上绘制包围矩形
cv::imshow("Image", image); // 显示图片
cv::waitKey(0);
return 0;
}
```
在这个示例代码中,我们首先读取了一张图片,然后将其转换为 HSV 颜色空间。接着,我们设置了一个颜色范围的下界和上界,并使用 cv::inRange() 函数提取了颜色范围内的区域。最后,我们使用 cv::boundingRect() 函数获取了包围矩形,并在原图上绘制了这个矩形。
请注意,这个示例代码只是提供了一个基本的思路,实际应用中可能需要根据具体情况进行调整。
阅读全文