C#:图像的透明度

《学习OpenCV(中文版)》

作者:(美)布拉德斯基(Bradski,G.)
(美)克勒(Kaehler,A.) 著
出版社:清华大学出版社
出版时间:2009年10月

参考资料:https://www.cnblogs.com/YiXiaoZhou/p/5910730.html
https://blog.csdn.net/iawfy_/article/details/124398457
https://blog.csdn.net/CAI____NIAO/article/details/112803041

一、图像通道

  • 常见的彩色图像为 RGB 类型
  • OpenCvSharp中对应的是 BGR 类型 ,注意对应通道。

调用库内函数时,用一部分对输入图像格式用要求 , 需要使用改变图像的格式的方法

  • Mat.ConvertTo()方法。

二、透明度

  • BGRA格式图像的应用
    将BGR图像转换成BGRA图像 可以使用 Mat.ConvertTo()
    也能使用Cv2.CvtColor(),
    当然也能自己将BGR图像拆分通道,新建一个通道,在组合成一个新的四通道图像。
    注意保存图像的格式要选择支持BGRA图像的格式保存,如.png。

  在RGB色彩空间三个通道的基础上,还可以加上一个A通道,也叫alpha通道,表示透明度。这种4个通道的色彩空间被称为RGBA色彩空间,PNG图像是一种典型的4通道图像。
  alpha通道的赋值范围是[0, 1],或者[0, 255],表示从透明到不透明。

三、绘制命令

  • Cv2.Line 直线
  • Cv2.Rectangle 矩形
  • Cv2.Circle 圆
  • Cv2.Ellipse 椭圆
  • Cv2.Polylines 多边形轮廓
  • Cv2.DrawContours 多边形填充
  • Cv2.PutText 文本

四、程序

1、程序C220912:调用电脑本机图片并画图的OpenCV程序。

       private void button1_Click(object sender, EventArgs e)
        {

            Scalar s = new Scalar(255, 255, 255);//创建一个颜色对象
            Mat mm = new Mat(210, 210, MatType.CV_8UC3, s);
            Mat output_image = new Mat(); ;

            List<OpenCvSharp.Point>  pts1 = new List < OpenCvSharp.Point >
                {
                new OpenCvSharp.Point(0, 76),
                new OpenCvSharp.Point(80, 76),
                new OpenCvSharp.Point(106, 0),
                new OpenCvSharp.Point(130, 76),
                new OpenCvSharp.Point(210, 76),
                new OpenCvSharp.Point(146, 124),
                new OpenCvSharp.Point(170, 210),
                new OpenCvSharp.Point(106, 152),
                new OpenCvSharp.Point(40, 210),
                new OpenCvSharp.Point(64, 124)
                    };

            List<List<OpenCvSharp.Point>> pts = new List<List<OpenCvSharp.Point>>() { pts1 };
            //画五角星
            Cv2.Polylines(mm, pts, true, new Scalar(0, 0, 255), 2);
            Cv2.DrawContours(mm, pts,-1, new Scalar(0, 255,0),-1,LineTypes.AntiAlias); //线宽:-1时代表填充区域
            //
            OpenCvSharp.Size size = new OpenCvSharp.Size(80, 50);
            OpenCvSharp.Scalar scalar = new OpenCvSharp.Scalar(0, 100, 200);
            //绘制椭圆 参数1:操作图像 2:椭圆中心 3:以椭圆长轴和短轴长度为边界的矩形区域,椭圆就绘制在这个矩形区域 4:椭圆旋转角度 5:起始角度  6:终止角度  7:颜色 8:线宽 9:线型 10:缩放参数(0为不缩放)
            Cv2.Ellipse(mm, new OpenCvSharp.Point(0, 20), size, 180, 90, 270, scalar, -1, LineTypes.AntiAlias, 0);

            mm.ConvertTo(output_image, MatType.CV_8UC4, 0);
            Cv2.ImWrite("output image.png", output_image);//支持jpg、png格式
            pictureBox1.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mm);

五、运行结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容