图像叠加中文字体

news2024/11/26 12:21:31

目录

  • 1) 前言
  • 2) freetype下载
  • 3) Demo
    • 3.1) 下载
    • 3.2) 编译
    • 3.3) 运行
    • 3.4) 结果
    • 3.5) 更详细的使用见目录中说明
  • 4) 积少成多

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1296468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文讲解关于MCU启动原理的几个关键问题

MCU最开始一启动后去哪里读代码? CPU上电启动后被设计为去地址0x00000000位置处读取代码;首先会连续读取两个字,分别是栈指针初始值和复位异常处理函数的地址;然后跳去执行复位异常处理函数。 当然在一些早期的ARM处理器设计中&a…

【计算机网络学习之路】HTTP请求

目录 前言 HTTP请求报文格式 一. 请求行 HTTP请求方法 GET和POST的区别 URL 二. 请求头 常见的Header 常见的额请求体数据类型 三. 请求体 结束语 前言 HTTP是应用层的一个协议。实际我们访问一个网页,都会像该网页的服务器发送HTTP请求,服务…

nodejs+vue+微信小程序+python+PHP的黄山旅游景点购票系统设计与实现-计算机毕业设计推荐

本文首先对该系统进行了详细地描述,然后对该系统进行了详细的描述。管理人员增加了系统首页、个人中心、用户管理、景点分类管理、景点简介管理、旅游路线管理、文章分类管理、公告文章管理、系统管理理等功能。黄山旅游景点购票系统是根据当前的现实需要&#xff0…

ELK(五)—集群搭建

写目录 ip规划ElasticSearch集群集群节点搭建集群es切片和副本切片(Shard):副本(Replica): 故障转移postman创建索引的情况直接在面板中创建索引总结 ip规划 ip名称服务192.168.150.190elk_masterelastics…

web漏洞原理与防御策略,web漏洞怎么挖掘

目录 Web安全的重要性 ​编辑常见的Web漏洞类型及其原理: 1、跨站脚本攻击(XSS): 2、SQL注入: 3、跨站请求伪造(CSRF): 4、远程文件包含(RFI)和本地文件包含(LFI):…

深入浅出:HTTPS单向与双向认证及证书解析20231208

介绍: 网络安全的核心之一是了解和实施HTTPS认证。本文将探讨HTTPS单向认证和双向认证的区别,以及SSL证书和CA证书在这些过程中的作用,并通过Nginx配置实例具体说明。 第一部分:HTTPS单向认证 定义及工作原理:HTTPS单向认证是一…

数据分析基础之《matplotlib(6)—饼图》

一、饼图介绍 1、什么是饼图 饼图广泛的应用在各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个区块,整个圆饼代表数据的总量,每个区块(圆弧&#xff0…

Python网络爬虫的基础理解-对应的自我理解误区

##通过一个中国大学大学排名爬虫的示例进行基础性理解 以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取:(1)按照排名先后顺序输出不同年份的前10…

生产上线需要注意的安全漏洞

一、关闭swagger 1、关闭swagger v3 # 需同时设置auto-startupfalse,否则/v3/api-docs等接口仍能继续访问 springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false 2、关闭swagger v2 # 只要不是true就不启用 swagger:enable: fa…

力扣题:数字与字符串间转换-12.9

力扣题-12.9 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:412. Fizz Buzz 解题思想:直接遍历添加至answer即可 class Solution(object):def fizzBuzz(self, n):""":type n: int:rtype: List[str]"""…

【银行测试】金融项目+测试方法范围分析,功能/接口/性能/安全...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、金融行业软件特…

文献计量学方法与应用、主题确定、检索与数据采集、VOSviewer可视化绘图、Citespace可视化绘图、R语言文献计量学绘图分析

目录 一、文献计量学方法与应用简介 二、主题确定、检索与数据采集 三、VOSviewer可视化绘图 四、Citespace可视化绘图 五、R语言文献计量学绘图分析 六、论文写作 七、论文投稿 更多应用 文献计量学是指用数学和统计学的方法,定量地分析一切知识载体的交叉…

量子芯片技术:未来的计算革命

量子芯片技术:未来的计算革命 一、引言 随着科技的不断发展,人类正在进入一个全新的技术时代,即量子时代。量子芯片技术作为这个时代的重要代表,正逐渐改变我们对计算和信息处理的理解。本文将深入探讨量子芯片技术的基本原理、…

git clone 命令

git clone 是一个用于克隆(clone)远程 Git 仓库到本地的命令。 git clone 可以将一个远程 Git 仓库拷贝到本地,让自己能够查看该项目,或者进行修改。 git clone 命令,你可以复制远程仓库的所有代码和历史记录&#xf…

用23种设计模式打造一个cocos creator的游戏框架----(十)迭代器模式

1、模式标准 模式名称:迭代器模式 模式分类:行为型 模式意图:提供一种方法顺序访问一个聚合对象中的各个元素,且不需要暴露该对象的内部表示. 结构图: ​ 适用于: 1、当你需要遍历一个复杂的数据结构…

【JUC】二十三、LongAdder:多线程计数的更优解

文章目录 1、常用API2、热点商品点赞计算器3、LongAdder高性能的原理4、源码:LongAdder-add方法5、源码:LongAdder-longAccumulate方法6、源码:LongAdder-sum方法7、AtomicLong和LongAdder的对比 Since 1.8,新加原子操作增强类&am…

elementUI中的 “this.$confirm“ 基本用法,“this.$confirm“ 调换 “确认“、“取消“ 按钮的位置

文章目录 前言具体操作总结 前言 elementUI中的 "this.$confirm" 基本用法&#xff0c;"this.$confirm" 调换 "确认"、"取消" 按钮的位置 具体操作 基本用法 <script> this.$confirm(这是数据&#xff08;res.data&#xff0…

『Redis』在Docker中快速部署Redis并进行数据持久化挂载

&#x1f4e3;读完这篇文章里你能收获到 在Docke中快速部署Redis如何将Redis的数据进行持久化 文章目录 一、拉取镜像二、创建挂载目录1 宿主机与容器挂载映射2 挂载命令执行 三、创建容器—运行Redis四、查看运行情况 一、拉取镜像 版本号根据需要自己选择&#xff0c;这里以…

现代皮质沙发模型材质编辑

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

微前端 模块联邦技术

目录 介绍 基本使用 演示用法 初始化配置文件 remote 项目 host 项目 为什么讲这个呢&#xff0c;很多人觉得他不是微前端&#xff0c;也有人定义它也是微前端&#xff0c;看怎么理解了&#xff0c;我觉得他是一个去中心化技术&#xff0c;它可以让多个独立构建的应用…