美文网首页
C#:图像的透明度

C#:图像的透明度

作者: 大龙10 | 来源:发表于2022-09-13 06:31 被阅读0次

    《学习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);
    
    

    五、运行结果

    相关文章

      网友评论

          本文标题:C#:图像的透明度

          本文链接:https://www.haomeiwen.com/subject/vqxqortx.html