首页 > 其他分享 >OpenCV 输出文本

OpenCV 输出文本

时间:2023-11-05 18:35:23浏览次数:35  
标签:输出 中文 mat opencv Cv2 OpenCV Learn 文本

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();
        }

程序效果截图:

参考

标签:输出,中文,mat,opencv,Cv2,OpenCV,Learn,文本
From: https://www.cnblogs.com/harrychinese/p/17810779.html

相关文章

  • Java根据文本内容,批量修改文件名称
    这两天学到IO流对文件的操作,想起在几年前有几百个按"1,2,3"排序命名的短文,于是产生将其批量命名后整理的想法.这批文本的名称在文件内第十行的位置,前面的是广告和其他不相关的东西本想构造抓到第九行广告语后返回下一行文本的方法,没能实现,只好用了更简单直接的直接抓第十行......
  • Python OpenCV 形态学应用—图像开运算与闭运算
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 无涯教程-批处理 - 输入/输出
    有三个通用的"File",用于键盘输入,在屏幕上打印文本和在屏幕上打印错误,"StandardIn"文件,称为stdin,包含程序/脚本的输入。"StandardOut"文件称为stdout,用于写入输出以在屏幕上显示。最后,被称为stderr的"StandardErr"文件包含要在屏幕上显示的所有错误消息。这三个标准......
  • 命令行文本计数统计程序
    这个作业属于哪个课程https://edu.cnblogs.com/campus/zjlg/23rjjsjc这个作业的目标写一个命令行文本计数统计程序,统计字符、句子等的个数,同时学会单元测试和性能测试姓名-学号施晨安-2021330301021Gitee地址:https://gitee.com/dawn-calm/Software-Fundamentals......
  • 格式化输出
    方法一:name=input('请输入姓名:')age=input('请输入年龄:')sex=input('请输入性别:')hobby=input('请输入爱好:')print(name+'今年'+age+'岁,'+'性别是'+sex+'的,爱好是'+hobby+'。')运行结果显示:  方法二:name=input......
  • 输出1至100中所有的奇数
    count=1whilecount<=100:ifcount%2==1:print(count)count=count+1运行结果显示:     ......
  • [Python急救站]文本进度条
    完游戏的朋友们,是不是看到那种加载加载进度条,感觉特别不错呢,所以今天就来看看文本进度条怎么做。1.基本的多行文本进度条importtimescale=10#变量scale表示输出进度条的精度print("------执行开始------")foriinrange(scale+1):a,b='**'*i,'..'*(sc......
  • C++prime之输入输出文件
    作为一种优秀的语言,C++必然是能操作文件的,但是我们要知道,C++是不直接处理输入输出的,而是通过一族定义在标准库中的类型来处理IO的。‘流’和‘缓冲区’‘流’和‘缓冲区’C++程序把输入输出看作字节流,并且其只检查字节流,不需知道字节来自何方。管理输入包括两步:将流与输入去......
  • 将语料文本写入数据库20231104
    importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;publicclassBaseDao{publicConnectionconn=null;publicPreparedStatementps=null;publicResultSetrs=null......
  • 无涯教程-MongoDB - 文本搜索
    从2.4版开始,MongoDB开始支持文本索引来搜索字符串内容,文本搜索使用词干搜索技术通过删除词干停止词(例如a,an,the,等)来在字符串字段中查找指定的词。目前,MongoDB支持大约15种语言。启用文本搜索最初,"TextSearch"是一项实验性函数,但从2.6版开始,默认情况下启用此配置。但是如果......