opencv inRange保留红色 c++
时间: 2024-01-30 12:03:14 浏览: 136
要在C++中使用OpenCV中的inRange函数来保留红色,可以使用以下代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat img = imread("image.jpg");
// 将BGR颜色空间转换为HSV颜色空间
Mat hsv_img;
cvtColor(img, hsv_img, COLOR_BGR2HSV);
// 定义红色范围
Scalar lower_red = Scalar(0, 50, 50);
Scalar upper_red = Scalar(10, 255, 255);
Scalar lower_red2 = Scalar(170, 50, 50);
Scalar upper_red2 = Scalar(180, 255, 255);
// 创建蒙版
Mat mask1, mask2, mask;
inRange(hsv_img, lower_red, upper_red, mask1);
inRange(hsv_img, lower_red2, upper_red2, mask2);
bitwise_or(mask1, mask2, mask);
// 应用掩模
Mat red_only;
bitwise_and(img, img, red_only, mask);
// 显示结果
imshow("Original Image", img);
imshow("Red Only Image", red_only);
waitKey(0);
destroyAllWindows();
return 0;
}
```
这段代码与Python代码很类似,首先将BGR颜色空间转换为HSV颜色空间,然后定义红色的范围。接着,创建一个蒙版,这个蒙版只有在红色范围内的像素值为1,其余像素值为0。最后,将蒙版应用于原始图像,只保留红色部分。
阅读全文