OpenCVSharp对图像进行颜色分割

使用OpencvSharp的InRange函数对图像进行RGB颜色的分割。

 1 using System;
 2 using OpenCvSharp;
 3 using OpenCvSharp.Extensions;
 4 using OpenCvSharp.XFeatures2D;
 5 using static OpenCvSharp.Cv2;
 6 namespace Mycv
 7 {
 8     public class cvGO
 9     {
10          /// <summary>
11         /// 分割颜色得到面积占比的大小
12         /// </summary>
13         /// <param name="srcbmp">原图</param>
14         /// <param name="dstbmp">结果图</param>
15         /// <param name="value_Low">最低值RGB(0-255) ([0]:R,[1]:G,[2]:B)这里用一个长度为3的数组存放最低RGB值</param>
16         /// <param name="value_High">最高值RGB(0-255)([0]:R,[1]:G,[2]:B)这里用一个长度为3的数组存放最高RGB值 </param>
17         public float Color_Inrange(Bitmap srcbmp, out Bitmap dstbmp, int[] value_Low, int[] value_High)
18         {
19             //bitmap转mat
20             using (Mat src = BitmapConverter.ToMat(srcbmp))
21             using (Mat dst = new Mat())
22             {
23                 //根据传进来的2个数组新建两个Scalar
24                 Scalar cvL = new Scalar(value_Low[0], value_Low[1], value_Low[2]);
25                 Scalar cvH = new Scalar(value_High[0], value_High[1], value_High[2]);
26
27                 //这一步就是颜色分割
28                 InRange(src, cvL, cvH, dst);
29                 //Inrange的时候已经给dst赋值了,这里是mat转bitmap
30                 dstbmp = dst.ToBitmap();
31                 //用CountNonZero来得到面积,然后再计算占比并返回这个值
32                 return (CountNonZero(dst) / (src.Width * src.Height * 1.0f) * 100);
33             }
34         }
35     }
36 }

原文地址:https://www.cnblogs.com/ybqjymy/p/12170836.html

时间: 2024-10-25 05:45:23

OpenCVSharp对图像进行颜色分割的相关文章

OpenCV &mdash;&mdash; 图像局部与分割(二)

分水岭算法 将图像中的边缘转化成"山脉",将均匀区域转化为"山谷" 分水岭算法首先计算灰度图像的梯度,这对山谷或没有纹理的盆地(亮度值低的点)的形成有效,也对山头或图像中没有主导线段的山脉(山脊对应的边缘)的形成有效.然后开始从用户指定点或算法得到的点开始"灌注"盆地知道这些区域连在一起.基于这样产生的标记就可以把区域合并到一起,合并后的区域又通过聚集的方式进行分割,好像图像被"填充"起来. cvWatershed 用 Inp

Python对DICOM图像进行阈值分割

Python对Dicom图像进行处理,离不开pydicom,opencv-python,matplotlib,numpy四个代码库,安装完成这四个代码库后, 可以读取Dicom图像,并对图像进行处理,显式处理后的结果,下面就举例说明: import cv2 import numpy import dicom from matplotlib import pyplot as plt # 读取单张Dicom图像 dcm = dicom.read_file("../Data/vhm.420.dcm&q

红外目标图像中阈值分割方法的比较与研究

红外目标图像中阈值分割方法的比较与研究   摘要:本文主要以红外图像目标检测技术为背景,在图像阈值分割中以最大熵准则及遗传算法为基础,研究了一维最大熵值法(KSW法)及基于遗传算法的KSW熵法单阈值.双阈值等三种不同的阈值分割方法,并通过实验仿真验证了它们的性能及差异.实验结果表明:基于遗传算法的KSW熵法的双阈值分割方法,可以用于红外型目标检测系统中,并取得良好效果,为了验证其是否具有普适性,在其它科学领域如:沿海码头等方向也做了相应的仿真实验,结果较为满意. 关键词:红外目标检测:阈值分割:

第十四节,OpenCV学习(三)图像的阈值分割

图像的阈值处理 图像的阈值分割:图像的二值化(Binarization) 阈值分割法的特点是:适用于目标与背景灰度有较强对比的情况,重要的是背景或物体的灰度比较单一,而且总可以得到封闭且连通区域的边界. 一.简单阈值 选取一个全局阈值,然后把图像分成非黑即白的二值图像. cv2.threshold()[源图像矩阵,进行分类的阈值,高于(低于)阈值时赋予的新值,方法选择参数] 返回两个值:阈值,阈值处理后的图像矩阵. cv2.THRESH_BINARY(黑白二值) cv2.THRESH_BINAR

车牌定位--颜色分割

http://blog.csdn.net/liujia2100/article/details/30845493 车牌定位是车牌识别中第一步,也是最重要的一步. 由于中国车牌种类多样,颜色不一, 再加上车牌经常有污损,以及车牌周围干扰因素太多,都成为了车牌定位的难点. 这里首先使用最简单算法来描述车牌定位,以及他的缺陷和改进. 一.投影法 1.车辆图像信息获取 2.HSV颜色转换 把RGB数据转换成HSV空间图像数据 hsvzation(image,hsv,width,height); 3.HS

基于Otsu算法的图像自适应阈值分割

在图像处理实践中,将灰度图转化为二值图是非常常见的一种预处理手段.在Matlab中,可以使用函数BW = im2bw(I, level)来将一幅灰度图 I,转化为二值图.其中,参数level是一个介于0~1之间的值,也就是用于分割图像的阈值.默认情况下,它可取值是0.5. 现在问题来了,有没有一种根据图像自身特点来自适应地选择阈值的方法呢?答案是肯定的!我们今天就来介绍其中最为经典的Otsu算法(或称大津算法).该算法由日本科学家大津展之(Nobuyuki Otsu)于1979年提出.这个算法看

python数字图像处理(11):图像自动阈值分割

图像阈值分割是一种广泛应用的分割技术,利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像. 在skimage库中,阈值分割的功能是放在filters模块中. 我们可以手动指定一个阈值,从而来实现分割.也可以让系统自动生成一个阈值,下面几种方法就是用来自动生成阈值. 1.threshold_otsu 基于Otsu的阈值分割方法,函数调

PS图片中字体或图像的颜色替换

第一步.打开替换颜色修改框.步骤:图像--调整--替换颜色 第二部.选择要替换的颜色 完后点确定,就可以修改好自己想要的颜色.

图像的颜色

视觉三基色假说 RGB三基色的选择 两种基色系统 常用的颜色模型 RGB模型 CMY模型 HSI模型 颜色模型之间的转换 备注:以上属总结性质,详情请参看数字图像处理相关文献!