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

//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 类型之间互相转换:

            Image imgTmp = srcImg.ToImage(); ; //mat转image

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

针对图像像素点的操作:

 

你可能感兴趣的:(EmguCV,openCV)