使用 OpenCV 的 inRange 函数进行颜色分割
在图像处理领域,颜色分割是一个常见的任务,常用于识别和提取图像中的特定颜色区域。OpenCV 提供了一个非常方便的函数 inRange
来实现这一功能。在这篇博客中,我们将详细介绍 inRange
函数的用法,并通过示例代码演示如何使用它来分割图像中的颜色。
inRange
函数介绍
inRange
是 OpenCV 库中的一个函数,用于检查图像像素值是否在指定的范围内,并生成一个二值图像。这个函数常用于颜色分割和阈值处理。
函数原型
void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);
参数说明
- src: 输入图像。这个图像可以是单通道(灰度图像)或多通道(彩色图像)。函数将对该图像进行处理。
- lowerb: 低阈值或下界。与
src
图像具有相同的类型和通道数,用于指定每个通道的下限值。 - upperb: 高阈值或上界。与
src
图像具有相同的类型和通道数,用于指定每个通道的上限值。 - dst: 输出图像。这个图像是一个单通道的二值图像,尺寸和
src
相同。像素值为 255(满足条件)或 0(不满足条件)。
函数描述
inRange
函数通过检查 src
图像的每个像素值是否在 lowerb
和 upperb
范围内,如果在范围内,则将对应位置的像素值设置为 255,否则设置为 0。结果保存在 dst
图像中。
示例代码
假设你有一个彩色图像 src
,你想找到图像中绿色的部分,可以使用以下代码:
#include <opencv2/opencv.hpp>
int main() {
// 读取输入图像
cv: