opencv识别红绿蓝三色之一,识别到后返回一个结果,不关闭摄像头代码,c++
时间: 2024-04-08 16:33:04 浏览: 27
要在C++中使用OpenCV识别红绿蓝三种颜色,并在识别到后保持摄像头开启,可以使用以下代码:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
VideoCapture cap(0); // 打开默认摄像头,如果有多个摄像头,请选择合适的设备编号
if (!cap.isOpened()) {
return -1;
}
Scalar lower_red = Scalar(0, 0, 100);
Scalar upper_red = Scalar(30, 30, 255);
Scalar lower_green = Scalar(0, 100, 0);
Scalar upper_green = Scalar(30, 255, 30);
Scalar lower_blue = Scalar(100, 0, 0);
Scalar upper_blue = Scalar(255, 30, 30);
while (true) {
Mat frame;
cap >> frame; // 从摄像头读取一帧图像
Mat hsv;
cvtColor(frame, hsv, COLOR_BGR2HSV);
Mat red_mask, green_mask, blue_mask;
inRange(hsv, lower_red, upper_red, red_mask);
inRange(hsv, lower_green, upper_green, green_mask);
inRange(hsv, lower_blue, upper_blue, blue_mask);
if (countNonZero(red_mask) > 0) {
// 红色存在
// 返回红色识别结果
imshow("Color Detection", frame); // 显示图像
waitKey(1);
}
else if (countNonZero(green_mask) > 0) {
// 绿色存在
// 返回绿色识别结果
imshow("Color Detection", frame); // 显示图像
waitKey(1);
}
else if (countNonZero(blue_mask) > 0) {
// 蓝色存在
// 返回蓝色识别结果
imshow("Color Detection", frame); // 显示图像
waitKey(1);
}
else {
imshow("Color Detection", frame); // 显示图像
waitKey(1);
}
}
cap.release(); // 释放摄像头
destroyAllWindows(); // 关闭窗口
return 0;
}
```
这段代码中,我们使用`VideoCapture`打开默认的摄像头设备(如果有多个摄像头,请根据需要选择合适的设备编号)。然后,我们在一个无限循环中读取一帧图像,并进行颜色识别。如果识别到红色、绿色或蓝色,则在窗口中显示相应的图像。使用`imshow`函数显示图像,并使用`waitKey(1)`等待一小段时间,以允许图像显示在窗口中。
要停止程序,可以按下任意键或关闭窗口。
请注意,在使用摄像头时,确保你的摄像头设备正常连接并可用。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)