emgucv-Mat类与颜色空间及转换

本文介绍了二维坐标系中点和矩形的数据结构与操作,包括点的位置判断、矩形属性及大小计算。同时,深入探讨了OpenCV中图像处理的基础,如图像读取、颜色空间转换(如BGR到灰度、HSV)、图像复制及像素级操作,为初学者提供了全面的图像处理入门指南。
//Point类数据结构表示二维坐标系的点,由坐标x, y指定的2D点
            Point pt = new Point(10, 10);
            pt.X = 10;
            pt.X = 20;
            /* Rectangle类用来表示矩形,成员有x,
            y, width, height,常用的属性:
            Size:返回值Size表示大小            
            Contains(Point):判断点是否在矩形内   
            Left:矩形左边缘x坐标   Right:矩形右边缘x坐标
            Top:矩形上边缘y坐标   Bottom:矩形下边缘y坐标 */
            Rectangle rect = new Rectangle(100, 100, 200, 200);
            rect.X = 10;
            rect.Y = 10;
            rect.Width = 100;
            rect.Height = 100;
            //打印大小
            bool ret = rect.Contains(new Point(80, 80));
            Console.WriteLine(ret);
            Console.WriteLine(rect.Left);
            Console.WriteLine(rect.Right);
            Console.WriteLine(rect.Top);
            Console.WriteLine(rect.Bottom);
            Size size = rect.Size;
            Console.WriteLine(size.Width);
            Console.WriteLine(size.Height);

            //1.Mat img = new Mat();
            //2.Mat img = new Mat("1.jpg");  <==>  Mat img = CvInvoke.Imread("1.jpg");
            //4.Mat img = CvInvoke.Imread("1.jpg");
            //Mat roi = new Mat(img, new Rectangle(10, 10, 100, 100));
            //5.Mat img = new Mat(new Size(300, 100), DepthType.Cv8U, 3);
            //img.SetTo(new MCvScalar(0, 255, 0));
            //7.Mat img = new Mat(100, 300, DepthType.Cv8U, 3);
            //img.SetTo(new MCvScalar(0, 255, 0));

            MCvScalar color = new MCvScalar(255, 255, 0);
            //Mat img = new Mat("1.jpg");
            //Mat img = new Mat(new Size(300, 100), DepthType.Cv8U, 3);
            Mat img = new Mat(100, 300, DepthType.Cv8U, 3);
            img.SetTo(new MCvScalar(0, 255, 0));
            CvInvoke.Imshow("img", img);

            Mat img2 = img;  //浅拷贝 (和原图像指向同一数据块)
            Mat img3 = img.Clone(); //深拷贝(原图像的副本)
            Mat img4 = new Mat();
            img.CopyTo(img4); //深拷贝(原图像的副本)
            img.SetTo(new MCvScalar(255, 255, 0));

            /*
            常用颜色空间
            RBG颜色空间、HSV/HLS颜色空间、Lab颜色空间
            转换所用函数CvtColor(IInputArray src, IOutputArray dst, ColorConversion code, int dstCn = 0);
            ColorConversion.Bgr2Gray  //BGR颜色空间转到灰度空间
            ColorConversion.Bgr2Rgb  //BGR颜色空间转到RGB颜色空间
            ColorConversion.Bgr2Hsv  //BGR颜色空间转到HSV颜色空间
            ColorConversion.Bgr2Lab  //BGR颜色空间转到Lab颜色空间
            R/G/B取值范围[0,255]
            H取值范围[0,360]
            S/V取值范围[0,1]
            L取值范围[0,100]
            a/b取值范围[127,-128]
            */

            Mat imgConvert = new Mat();
            CvInvoke.CvtColor(img, imgConvert, ColorConversion.Bgr2Gray);
            CvInvoke.Imshow("img4", img4);

mat类和 Image<Bgr, Byte> 类型之间互相转换:

            Image<Bgr, Byte> imgTmp = srcImg.ToImage<Bgr, Byte>(); ; //mat转image

            Mat dstImg = new Mat();
            CvInvoke.BitwiseAnd(imgTmp, imgTmp, dstImg); //image 转 mat

针对图像像素点的操作:

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值