写一份c++代码,打开摄像头识别红色和蓝色,识别到红色返回信号coco,识别到蓝色返回lock
时间: 2024-03-09 11:49:49 浏览: 56
好的,以下是一份简单的 C++ 代码,使用 OpenCV 库来打开摄像头并识别红色和蓝色:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 打开摄像头
VideoCapture cap(0);
// 检查是否成功打开
if (!cap.isOpened()) {
cerr << "Failed to open camera" << endl;
return -1;
}
// 定义蓝色和红色的颜色范围
Scalar blue_lower(100, 100, 50);
Scalar blue_upper(130, 255, 255);
Scalar red_lower(0, 100, 100);
Scalar red_upper(30, 255, 255);
while (true) {
// 读取一帧
Mat frame;
cap.read(frame);
// 转换到 HSV 颜色空间
Mat hsv;
cvtColor(frame, hsv, COLOR_BGR2HSV);
// 分别检测蓝色和红色
Mat blue_mask, red_mask;
inRange(hsv, blue_lower, blue_upper, blue_mask);
inRange(hsv, red_lower, red_upper, red_mask);
// 计算蓝色和红色的像素数量
int blue_count = countNonZero(blue_mask);
int red_count = countNonZero(red_mask);
// 根据像素数量返回相应的信号
if (blue_count > red_count) {
cout << "lock" << endl;
} else {
cout << "coco" << endl;
}
// 显示原始帧和掩模
imshow("Frame", frame);
imshow("Blue Mask", blue_mask);
imshow("Red Mask", red_mask);
// 按下 ESC 键退出循环
if (waitKey(1) == 27) {
break;
}
}
// 释放摄像头并关闭窗口
cap.release();
destroyAllWindows();
return 0;
}
```
希望这份代码能对你有所帮助!
阅读全文