图像叠加中文字体

2023-12-13 08:41:55

1) 前言

  • 最近在做图片、视频叠加文字,要求支持中文,基本原理是将图片或视频解码后叠加文字,之后做图片或视频编码即可。
  • 项目中是使用OpenCV的文字叠加,因为使用的版本不支持freetype,所以在此记录下,主要使用OpenCV+freetype的方式对原始数据的文字叠加。

2) freetype下载

链接: freetype master
编译部分在此不展开。

3) Demo

该demo基本满足需求,支持选择字体类型,文字大小设置,颜色设置,水平/垂直叠加,增加下划线以及透明度等,主要参考

struct FontProperty {
        int fontSize;           // font size (pixel)
        double spaceRatio;       // ratio of distance when meet a space, base on font size
        double fontRatio;        // ratio of distance between each character, base on font size
        double fontRotateAngle;  // rotate angle
        double fontDiaphaneity;  // merge ratio
        bool fontIsUnderline;   // underline
        bool fontIsVertical;    // put text in vertical
    };

3.1) 下载

master原链接:freetype_opencv

3.2) 编译

原链接代码编译不过去,做部分修改和增加一些依赖即可,build.sh为编译文件。链接:工程项目

g++ *.cpp  -I freetype2/ -I /usr/include/opencv4/ ./libfreetype.a  -L /usr/lib/aarch64-linux-gnu/ -lopencv_core -lopencv_highgui -lz -lopencv_imgproc -lopencv_imgcodecs
说明:
1)板端(用的Soc是NVIDIA的NANO)opencv使用的是4.5.4
2)目录中的libfreetype.a是已编译好的freetype静态库,理论上是aarch64的架构都可以使用
3)以上编译脚本的-I和-L部分根据自己的OpenCV实际安装情况做调整, 当然也可以用cmake

3.3) 运行

./a.out 0		/**0表示用的默认字体,该字体有沟边效果,其他字体输入1,2,3有不同的效果*/

3.4) 结果

在这里插入图片描述

3.5) 更详细的使用见目录中说明

4) 积少成多

  • 一般文字叠加的颜色和背景色尽量反色,即自动检测叠加坐标区域的背景色亮度,通过灰度自适应。
  • 另外一种方案是对文字勾边,这种方式更加简单。

文章来源:https://blog.csdn.net/nc_linux/article/details/134878308
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。