用C++语言编写程序,要求使用opencv来根据所读取的图片中的不同的颜色,动态改变图片上画线的颜色
时间: 2023-05-19 20:07:09 浏览: 86
可以使用OpenCV中的cv::inRange函数来提取不同颜色的区域,然后使用cv::line函数来画线,并指定颜色参数即可。以下是示例代码:
```c
#include <opencv2/opencv.hpp>
int main()
{
cv::Mat image = cv::imread("test.jpg");
cv::Mat hsv;
cv::cvtColor(image, hsv, cv::COLOR_BGR2HSV);
cv::Mat mask1, mask2;
cv::inRange(hsv, cv::Scalar(0, 70, 50), cv::Scalar(10, 255, 255), mask1);
cv::inRange(hsv, cv::Scalar(170, 70, 50), cv::Scalar(180, 255, 255), mask2);
cv::Mat mask = mask1 | mask2;
std::vector<cv::Vec4i> lines;
cv::HoughLinesP(mask, lines, 1, CV_PI / 180, 50, 50, 10);
for (size_t i = 0; i < lines.size(); i++)
{
cv::line(image, cv::Point(lines[i][0], lines[i][1]), cv::Point(lines[i][2], lines[i][3]), cv::Scalar(0, 0, 255), 2);
}
cv::imshow("result", image);
cv::waitKey(0);
return 0;
}
```
这段代码会读取名为test.jpg的图片,提取出色相在0-10和170-180之间的区域,然后使用霍夫变换检测直线,并将直线用红色画在图片上。