OpenCVsharp分离蓝色区域
时间: 2025-01-02 22:23:40 浏览: 6
### 使用 OpenCvSharp 提取图像中蓝色区域
为了实现这一目标,通常会采用 HSV 颜色空间来定义颜色范围,因为相比 RGB 空间,在 HSV 下更容易分离色彩信息。通过 `Cv2.CvtColor()` 函数可以将输入图片从 BGR 转换成 HSV 格式[^1]。
一旦获得了 HSV 图像,就可以利用 `Cv2.InRange` 方法设置上下限值以获取特定的颜色区间掩码。对于蓝色而言,合理的 HSV 值范围大约为 H(色调): 100 到 130, S(饱和度): 50 至 255 和 V(亮度): 50 至 255[^2]。
下面是一个完整的 C# 实现案例:
```csharp
using System;
using OpenCvSharp;
class Program {
static void Main(string[] args) {
// 加载原始图像
Mat srcImage = Cv2.ImRead("path_to_image", ImreadModes.Color);
// 将BGR转成HSV模式
Mat hsvImage = new Mat();
Cv2.CvtColor(srcImage, hsvImage, ColorConversionCodes.BGR2HSV);
// 定义蓝色的HSV范围
Scalar lowerBlue = new Scalar(100, 50, 50);
Scalar upperBlue = new Scalar(130, 255, 255);
// 创建掩模
Mat mask = new Mat();
Cv2.InRange(hsvImage, lowerBlue, upperBlue, mask);
// 应用掩膜到原图上得到只保留蓝色部分的结果
Mat result = new Mat();
srcImage.CopyTo(result, mask);
// 显示结果
Cv2.ImShow("Original Image", srcImage);
Cv2.ImShow("Masked Blue Region", result);
Cv2.WaitKey(0);
}
}
```
这段程序首先读入一幅彩色图像并将其转换至 HSV 彩色模型;接着设定好蓝色对应的 HSV 数值界限,并据此创建二值化的遮罩层;最后把该遮罩应用于初始图像之上从而仅留下属于指定蓝调的部分显示出来。
阅读全文