OpenCV 输出文本

PutText() 输出文本

  • OpenCV5 将支持中文字符的输出, 当前版本OpenCV4原生不支持, 可以使用Contrib包+FreeType方式实现, 不过比较麻烦.
  • 为了省事, 也可以通过将Mat转成bitmap,然后使用GDI方式输出中文字符.

示例代码

/// <summary>
        /// OpenCV暂时不能支持中文字符输出,显示为??
        /// </summary>
        private void putTextTest()
        {
            string pngFile = @"D:\my_workspace\opencv\images\draw.png";
            var mat = Cv2.ImRead(pngFile, ImreadModes.Color);

            double fontScale = 1;
            int thinkness = 2;
            mat.PutText("Learn opencv中文", new OpenCvSharp.Point(100, 100), HersheyFonts.HersheyComplex,
                fontScale, Scalar.Red, thinkness, LineTypes.AntiAlias, false);

            fontScale = 2;
            mat.PutText("Learn opencv中文", new OpenCvSharp.Point(100, 150), HersheyFonts.HersheyComplex,
                fontScale, Scalar.Red, thinkness, LineTypes.AntiAlias, false);

            Cv2.ImShow("Learn opencv", mat);
            Cv2.WaitKey();
        }

        /// <summary>
        /// 使用GDI方式输出中文字符
        /// </summary>
        private void putChineseTest()
        {
            string pngFile = @"D:\my_workspace\opencv\images\draw.png";
            var mat = Cv2.ImRead(pngFile, ImreadModes.Color);
            var bmp = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(mat);
            Graphics graphics = Graphics.FromImage(bmp);
            graphics.DrawString("Learn opencv中文", new Font("宋体", 20), new SolidBrush(Color.Red), 100, 200);
            var mat2 = OpenCvSharp.Extensions.BitmapConverter.ToMat(bmp);

            Cv2.ImShow("Learn opencv中文", mat2);
            Cv2.WaitKey();
        }

程序效果截图:

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值