EmguCV实现颜色物体识别与追踪(CvInvoke.InRange()函数)

本文详细介绍了如何在HSV颜色空间中进行颜色追踪,包括不同颜色的HSV参考值、使用EmguCV与OpenCV进行颜色识别的方法,以及在图像和视频中追踪特定颜色物体的实例。

文章目录

说明

1、在HSV颜色空间下进行颜色追踪,RGB颜色空间每个通道分量受亮度影响大,HSV颜色空间受亮度影响较小;
2、EmguCV与OpenCV的HSV取值: H:0-180 ; S: 0-255; V: 0-255(注意取值范围);
在这里插入图片描述
3、常用的HSV参考值:
在这里插入图片描述
4、使用Inrange()函数在HSV空间中寻找HSV在某一范围内的值,输出掩膜,作为寻找结果。

Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Emgu.CV;
using Emgu.CV.Util;
using Emgu.CV.Structure;
using Emgu.CV.CvEnum;
using Emgu.Util;
using System.Drawing;

namespace lesson28_console
{
   
   
    class Program
    {
   
   
        static void Main(string[] args)
        {
   
   
            ///图片颜色识别
            //Mat srcImg = CvInvoke.Imread(@"C:\Users\hello\Desktop\EmguCVDemo\lesson28\lesson28_console\bin\Debug\opencv-logo-white.png");
            //CvInvoke.Imshow("input", srcImg);

            //Mat hsvImg = new Mat();
            //Mat mask = new Mat();

            //double h_min = 0, s_min = 43, v_min = 46;
            //double h_max = 10, s_max = 255, v_max = 255;
            //ScalarArray hsv_min = new ScalarArray(new MCvScalar(h_min, s_min, v_min));
            //ScalarArray hsv_max = new ScalarArray(new MCvScalar(h_max, s_max, v_max));

            //CvInvoke.CvtColor(srcImg, hsvImg, ColorConversion.Bgr2Hsv);
            //CvInvoke.InRange(hsvImg, hsv_min, hsv_max, mask);   //输出为符合要求的图像掩膜
            //CvInvoke.MedianBlur(mask, mask, 5);
            //CvInvoke.Imshow("mask", mask);
            //VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint();
            //VectorOfRect hierarchy = new VectorOfRect();
            ////发现轮廓
            //CvInvoke.FindContours(mask, contours,hierarchy, RetrType.External, ChainApproxMethod.ChainApproxNone);
            //VectorOfVectorOfPoint contours_approx = new VectorOfVectorOfPoint(contours.Size);
            //Rectangle rect = new Rectangle();
            //for (int i =0; i < contours.Size;i++)
            //{
   
   
            //    CvInvoke.ApproxPolyDP(contours[i], contours_approx[i], 3, true);
            //    CvInvoke.DrawContours(srcImg, contours_approx, i, new MCvScalar(255, 0, 0), 1, LineType.EightConnected, hierarchy, 0);
            //    CvInvoke.Imshow("red", srcImg);
            //    rect = CvInvoke.BoundingRectangle(contours_approx[i]);
            //    CvInvoke.Rectangle(srcImg, rect, new MCvScalar(0, 0, 255), 1);
            //    CvInvoke.PutText(srcImg, "red", new Point(rect.X, rect.Y), FontFace.HersheyComplexSmall, 1.2, new MCvScalar(0, 255, 0));
            //}
            //CvInvoke.WaitKey(0);


            ///视频绿色物体追踪
            //VideoCapture cap = new VideoCapture("1.mp4");
            //if(!cap.IsOpened)     //打开文件失败
            //{
   
   
            //    Con
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值