用C++写opencv 摄像头识别框选红蓝板的代码
时间: 2023-04-07 21:05:08 浏览: 62
我可以回答这个问题。以下是使用C语言编写OpenCV摄像头识别框选红蓝板的代码示例:
```
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cap(0);
if (!cap.isOpened())
{
cout << "Failed to open camera!" << endl;
return -1;
}
while (true)
{
Mat frame;
cap >> frame;
if (frame.empty())
{
cout << "Failed to capture frame!" << endl;
break;
}
Mat hsv;
cvtColor(frame, hsv, COLOR_BGR2HSV);
Mat red_mask, blue_mask;
inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), red_mask);
inRange(hsv, Scalar(110, 70, 50), Scalar(130, 255, 255), blue_mask);
vector<vector<Point>> red_contours, blue_contours;
findContours(red_mask, red_contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
findContours(blue_mask, blue_contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
for (size_t i = 0; i < red_contours.size(); i++)
{
Rect rect = boundingRect(red_contours[i]);
rectangle(frame, rect, Scalar(0, 0, 255), 2);
}
for (size_t i = 0; i < blue_contours.size(); i++)
{
Rect rect = boundingRect(blue_contours[i]);
rectangle(frame, rect, Scalar(255, 0, 0), 2);
}
imshow("Frame", frame);
if (waitKey(1) == 27)
{
break;
}
}
cap.release();
destroyAllWindows();
return 0;
}
```