图像叠加中文字体

目录

  • 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 sizedouble fontRatio;        // ratio of distance between each character, base on font sizedouble fontRotateAngle;  // rotate angledouble fontDiaphaneity;  // merge ratiobool fontIsUnderline;   // underlinebool 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.hqwc.cn/news/267597.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用CHAT了解历史?

问CHAT:古代有什么常见的简单机械? CHAT回复: 1. 滑轮:滑轮是一种简单的机械,主要提供力量放大、改变力的方向等功能。在古代,人们使用滑轮来托起重物,如水井的提水装置,建造大型建…

Android获取Wifi网关

公司有这样一个应用场景:有一台球机设备,是Android系统的,它不像手机,它没有触摸屏幕,所以我们对球机的操作很不方便,于是我们搞这样一个设置:点击球机电源键5次分享出一个热点,然后…

flex布局一行n个

上图 缩小后 主要用了 flex-basis flex-grow flex-shrink flex的三个属性 有兴趣的可以看看 深入理解CSS之flex精要之 flex-basis flex-grow flex-shrink 实战讲解 .bg{background-color: aquamarine;width: 100%;height: 100%;display: flex;flex-wrap: wrap;}.box1{backgr…

亚马逊鲲鹏系统全自动模拟真人下单更真实

在亚马逊鲲鹏系统下,我们可以通过模拟真人购物习惯来进行自动下单流程,通过设置关键词、多个ASIN进行货比三家,然后执行一系列点击、浏览、滑动滚动条、查看详情、下单购买等操作,以完成整个下单过程。以下介绍这一自动化下单流程…

贪心算法:理论基础 分发饼干 摆动序列 最大子序和

理论基础 什么是贪心算法? 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。什么时候用贪心算法? 贪心算法并没有固定的套路。唯一的难点就是如何通过局部最优,推出整体最优。如何验证可不可以用贪心算法? 最…

EasyV易知微数字孪生助力解决实际行业问题与痛点

数字孪生技术在当前多个领域得到了广泛的应用,特别是在航空航天、工业、城市和医学等领域,它被视为许多科技企业所关注的焦点。这种技术已经成为实现智能化的重要手段,它可以应用于项目设计、建造和运营等各个阶段,能够解决实际问…

vue-如何实现带参数跳转页面

文/朱季谦 在vue框架的前端页面上,若要实现页面之间的带参数跳转,可参考以下实现过程: 例如,点击截图中的“查看试卷”,可实现带参跳转到相应的试卷页面,该功能类似查看试卷的详情页面: 假如以…

C++类与对象(一)

目录 一,面向过程和面向对象初步认识 二,类的引入 三,类的定义 四,类的访问限定符及封装 五,类的实例化 六,类对象模型 七,this指针 一,面向过程和面向对象初步认识 c语言是面…

高通SDX12:nand flash适配

一、SBL阶段 代码流程如下: boot_images\core\storage\flash\src\dal\flash_nand_init.c nand_probe ->nand_intialize_primary_hal_device ->>nand_get_device_list_supportedboot_images\core\storage\flash\src\dal\flash_nand_config.c ->>>flash_n…

饮料行业供应链主数据解决方案

引用GB/T10789-2015《饮料通则》中定义,饮料共11大类。饮料企业中,有的会包含所有的分类,有的会涉及其中的一类或几个分类。 但,不同的饮料企业在运营管理方式和经营的重点,延伸到企业主数据管理的重点和策略都是有所不…

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V3模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V3模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】MobileNets_V3模型算法详解前言MobleNet_V3讲解SE模块(Squeeze Excitation)重新设计激活函数反向残差结构(Inverted Residua…

屏幕分辨率修改工具SwitchResX mac功能特点

SwitchResX mac是可用于修改和管理显示器的分辨率和刷新率。 SwitchResX mac功能和特点 支持多种分辨率和刷新率:SwitchResX可以添加和管理多种分辨率和刷新率,包括自定义分辨率和刷新率。 自动切换分辨率:SwitchResX可以根据应用程序和窗口…