opencv的inrange函数
时间: 2023-12-18 13:04:36 浏览: 275
OpenCV的inRange函数是一个图像阈值化函数,用于将输入图像中的像素值限制在指定的范围内。其函数原型为:
```
void cv::inRange(
InputArray src, // 输入图像
InputArray lowerb, // 下限
InputArray upperb, // 上限
OutputArray dst // 输出图像
);
```
其中,src是输入图像,可以是单通道或多通道图像,lowerb和upperb分别是下限和上限,可以是标量或单通道图像,dst是输出图像,与输入图像大小和类型相同,每个像素的值为0或255。
inRange函数的作用是将输入图像中像素值在下限和上限之间的像素设置为255,其余像素设置为0。可以通过下面的代码示例来理解inRange函数的使用方法:
```
cv::Mat img = cv::imread("input.jpg"); // 读入图像
cv::Mat hsv;
cv::cvtColor(img, hsv, cv::COLOR_BGR2HSV); // 将图像转换到HSV颜色空间
cv::Scalar lowerb(20, 100, 100); // 下限
cv::Scalar upperb(30, 255, 255); // 上限
cv::Mat mask;
cv::inRange(hsv, lowerb, upperb, mask); // 进行图像阈值化
cv::Mat output;
cv::bitwise_and(img, img, output, mask); // 将阈值化的图像与原图像进行按位与操作
cv::imshow("Input", img);
cv::imshow("Output", output);
cv::waitKey(0);
```
这段代码读入一张RGB图像,将其转换到HSV颜色空间,然后设定下限和上限进行图像阈值化,最后将阈值化的图像与原图像进行按位与操作,得到输出图像。
阅读全文