图像叠加中文字体

7 篇文章 0 订阅
5 篇文章 0 订阅

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) 积少成多

  • 一般文字叠加的颜色和背景色尽量反色,即自动检测叠加坐标区域的背景色亮度,通过灰度自适应。
  • 另外一种方案是对文字勾边,这种方式更加简单。
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值