OpenCvSharp颜色识别(用Winform实现)

OpenCvSharp颜色识别流程为:

  1. 读取RGB图片
  2. 转化为HSV模型
  3. 输入识别颜色的HSV范围,使用InRange函数进行颜色识别
  4. 图像处理,将识别区域突出显示

界面设计:

核心代码:

        private Bitmap _ShowHsvProcess(string path,int hMin,int hMax,int sMin,int sMax,int vMin,int vMax)
        {
            Mat src = new Mat(path, ImreadModes.AnyColor);
            Mat hsv = new Mat();
            Cv2.CvtColor(src, hsv, ColorConversionCodes.BGR2HSV);       //转化为HSV

            Mat dst = new Mat();
            Scalar scL = new Scalar(hMin, sMin, vMin);
            Scalar scH = new Scalar(hMax, sMax, vMax);
            Cv2.InRange(hsv, scL, scH, dst);                            //获取HSV处理图片
            var kernel = Cv2.GetStructuringElement(MorphShapes.Rect, new OpenCvSharp.Size(20, 20),
               new OpenCvSharp.Point(-1, -1));
            Cv2.Threshold(dst, dst, 0, 255, ThresholdTypes.Binary);         //二值化
            Cv2.Dilate(dst, dst, kernel);                                   //膨胀
            Cv2.Erode(dst, dst, kernel);                                    //腐蚀
            Cv2.FindContours(dst, out OpenCvSharp.Point[][] contours, out HierarchyIndex[] hierarchy, RetrievalModes.CComp, ContourApproximationModes.ApproxSimple, null);
            if (contours.Length > 0)
            {
                var boxes = contours.Select(Cv2.BoundingRect).Where(w => w.Height >= 10 && w.Width > 10);
                var imgTar = src.Clone();
                foreach (var rect in boxes)
                {
                    Cv2.Rectangle(imgTar, new OpenCvSharp.Point(rect.X, rect.Y), new OpenCvSharp.Point(rect.X + rect.Width, rect.Y + rect.Height), new OpenCvSharp.Scalar(0, 0, 255), 1);
                }
                Bitmap bitmap = BitmapConverter.ToBitmap(imgTar);
                return bitmap;
            }
            else
            {
                Bitmap bitmap = BitmapConverter.ToBitmap(src);
                return bitmap;
            }
        }

效果:

 

常见颜色的HSV取值范围
 

具体代码可以进下面的路径进行查看:

https://codechina.csdn.net/lmSwind/opencvsharp_project/-/tree/master/src/OpenCvSharpProject

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值