对视频图像进行OSD叠加

2023-05-16

    频叠加就是将图片和文字信息叠加到视频信号中,如电视台的LOGO,电影的字幕,电视机的菜单,都是通过视频叠加的形式显示在视频图像中的。区别于用于专业影视编辑行业的字幕叠加器,字符叠加器这一名称现在更加习惯用于各类监控系统中使用的价格相对低廉的具备基本的视频字幕叠加能力的电子设备。 
    字符叠加器按照功能分型可分为 动态字符叠加器 静态字符叠加器  
    动态字符叠加器指与微机或其他智能设备配合,可显示随现场情况变化的字 符信 息,字符信息与现场视频信号相结合,为监控者提供更为详尽准确的信息。 

    静态字符叠加器指只在视频信号上显示相对固定字符信息的设备,主要用于在视频信号上叠加摄像头位置信息。价格低廉是此类静态字符叠加器的特点之一。

    接下来给大家介绍我在hi3516的平台实现的OSD叠加的测试代码,我选择在VI通道进行osd叠加,具体的初始化操作和通道的配置会在下一篇文件会介绍,本文给大家介绍的是通过自己设置一个汉字模或者ASSIC模,然后通过二进制表示,最后读取字模并绘制在相应的图像区域,经过编码后即可显示叠加的内容。

    先来了解一下字库的表示格式  

一般我们使用16*16的点阵宋体字库,所谓16*16,是每一个汉字在纵、横各16点的区域内显示的。不过后来又有了HZK12、HZK24,HZK32和HZK48字库及黑体、楷体和隶书字库。虽然汉字库种类繁多,但都是按照区位的顺序排列的。前一个字节为该汉字的区号,后一个字节为该字的位号。每一个区记录94个汉字,位号则为该字在该区中的位置。
   因此,汉字在汉字库中的具体位置计算公式为: 94*(区号-1)+位号-1 。减1是因为数组是以0为开始而区号位号是以1为开始的。这仅为以汉字为单位该汉字在汉字库中的位置,那么,如何得到以字节为单位得到该汉字在汉字库中的位置呢?只需乘上一个汉字字模占用的字节数即可,即:(94*(区号-1)+位号-1)*一个汉字字模占用字节数,而按每种汉字库的汉字大小不同又会得到不同的结果。
以16*16点阵字库为例,
计算公式则为:(94*(区号-1)+(位号-1))*32。汉字库文该从该位置起的32字节信息即记录了该字的字模信息。
以32*32点阵字库为例,
计算公式则为:(94*(区号-1)+(位号-1))*128。汉字库文该从该位置起的128字节信息即记录了该字的字模信息。
先来看一个32为的字模 自己也可以通过excel绘制一个的一个 “一”
 
对应的二进制代码:
unsigned char ZT[128] =
{
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x07, 0xFF,0xFF, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00,
0x00, 0x00,0x00, 0x00
};
取字模
memcpy(p, &ZT, 128); //测试使用
把取出来分字模绘制成对应的位图
static inline void do_blit(char *p, char *origin, unsigned int BitbmpPix_X, int x, int y, int font)
{
char *pixel;
int row, col;
int y_next = y;
int j,k;
if(font == hz_font)
{
for(row = 0; row < 32; row++)
{
pixel = origin + (BitbmpPix_X * 2 * (y_next)) + x;
for(j = 0; j < 4; j++)
{
for(col = 0; col < 8; col++)
{
if(bitmap[row*4+j] &(0x80 >> col))
{
pixel[(col+j*8)*2] = 0x7f;
pixel[(col+j*8)*2+1] = 0xff;
}
else
{
pixel[(col+j*8)*2] = 0x00;
pixel[(col+j*8)*2+1] = 0x00;
}
}
}
y_next++; /* Next line in bitmap */
}
}
else
{
for(row = 0; row < 32; row++)
{
pixel = origin + (BitbmpPix_X * 2 * (y_next)) + x;
for(k = 0;k < 2;k++)
{
for(col = 0; col < 8; col++)
{
if(bitmap[row*2+k] &(0x80 >> col))
{
pixel[(col+k*8)*2] = 0x7f;
pixel[(col+k*8)*2+1] = 0xff;
}
else
{
pixel[(col+k*8)*2] = 0x00;
pixel[(col+k*8)*2+1] = 0x00;
}
}
}
y_next++; /* Next line in bitmap */
}
}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对视频图像进行OSD叠加 的相关文章

  • keras 多输入多输出网络

    keras中的多输入多输出网络 多输入多输出网络搭建的官网介绍 xff1a http keras cn readthedocs io en latest getting started functional API Demo span cl
  • lodash源码分析之compact中的遍历

    小时候 xff0c 乡愁是一枚小小的邮票 xff0c 我在这头 xff0c 母亲在那头 长大后 xff0c 乡愁是一张窄窄的船票 xff0c 我在这头 xff0c 新娘在那头 后来啊 xff0c 乡愁是一方矮矮的坟墓 xff0c 我在外头
  • A-Softmax的keras实现-《SphereFace: Deep Hypersphere Embedding for Face Recognition》

    A Softmax的keras实现 参考文档 xff1a https www cnblogs com heguanyou p 7503025 html 注 xff1a 主体完成 xff0c 调试中 xff0c 先行记录 xff0c 待续 已
  • AM-Softmax的keras实现: 《Additive Margin Softmax for Face Verification》

    原答案在对输入进行归一化时有错误 xff0c 另外m应该是一个固定的超参数不需要训练 xff0c 已改正 论文地址 xff1a Additive Margin Softmax for Face Verification 和L Softmax
  • 最小跳跃次数

    1 最小跳跃次数 1 最小跳跃次数 1 1 题目描述 xff1a 1 2 解题思路1 3 实现代码 出自华为实习机试第二题 xff1a 1 1 题目描述 xff1a 先输入一个数字代表数字总数 然后依次输入几个数字 xff0c 代表当前位置
  • moby、docker-ce与docker-ee的区别

    近期研究docker相关技术 xff0c 发现官网分为moby docker ce与docker ee不同板块 xff0c ce和ee版本好理解 xff0c 但2017年开始又多出个Moby xff0c 开始有点凌乱 xff0c Googl
  • AutoRun与NoDriveTypeAutoRun键值

    Autorun inf 与注册表NoDriveTypeAutoRun键值的一些说明 二进制位数 8 7 6 5 4 3 2 1 Type 1 RAMDISK CDROM REMOTE FIXED REMOVABLE NO ROOT DIR
  • Windows下编译qt-material

    Windows下编译qml material 公司新项目里选择用 QML 来做界面 xff0c 这段时间一直在学习 QML 的语法和基础组件 xff0c 限于 QML 目前不太成熟 xff0c 没有十分丰富的控件 xff0c 加上自己水平有
  • SpringSecurity是如何实现账号密码的验证登录的

    个人理解 xff1a 1 首先在 配置类中定表单登录的URL和账号密码 2 jsp表单中的url和账号秘密要与指定的名称一致 3 创建 SecurityAdmin类 xff0c 集成User类 xff0c 因为User类只包含usernam
  • HDFS入门(三)

    五 HDFS接口 xff08 一 xff09 HDFS命令行接口 HDFS命令行接口作为了解 xff0c 在这里不再赘述 xff08 二 xff09 JAVA API接口 使用URL访问hdfs 1 xff09 怎么访问 xff1f jav
  • 怎么去掉Chrome浏览器新标签页的缩略图

    每次都很烦那八个框框 xff0c 再漂亮的主题图片都被那八个缩略图框搞糟了 xff01 对吧 xff0c 应该有同感 解决办法 xff1a chrome拓展程序里下载拓展程序 Stylish 安装好之后就在拓展程序里找到它 xff0c 打开
  • 上班一个月,我的几点体会

    这篇博文其实在去年就已经在CSDN发过的 后来 xff0c 某次误操作不小心删除了 xff0c 今天找出来重新发一下 我是从3月1号开始上班的 xff0c 今天3月31号 xff0c 刚好一个月结束 xff0c 在这一个月里 xff0c 我
  • NVMe CLI 命令使用

    1 下载地址 https github com linux nvme nvme cli 2 安装 unzip nvme cli master zip cd nvme cli master zip make amp amp make inst
  • 我这一年写的博文

    总结2013 xff0c 展望2014 xff0c gt gt 我的2013年终总结 在苦与乐中成长 下面是我这一年所写的博客 xff0c 主要涉及C xff0c Net Framework xff0c SQL Server xff0c S
  • 我的2013年终总结——在苦与乐中成长

    写在前面 最近正好在三亚旅游 xff0c 空闲下来时 xff0c 便开始进行年终总结 由于去年年末较忙 xff0c 便错过了2012 年的年终总结 xff0c 所以本文将会对 2012 与 2013 两年一起进行总结 说说工作 学生 到 码
  • 走过2014,2015我将继续前行

    写在前面 一转眼 xff0c 一年时光就这么溜走了 在这辞旧迎新之际 xff08 这说法是不是很官方啊 xff0c 呵呵 xff01 xff09 xff0c 我将对即将过去的2014 年进行一番总结 xff0c 并对即将来临的 2015 年
  • csr867x入门之串口AT指令协议(三)

    目录 功能简介 功能实现 功能调试 功能简介 通过封装串口AT指令 xff0c 我们可以把8670作为一个蓝牙外设 xff0c 通过串口的AT指令协议与外部mcu通讯 比如当csr8670连接到pc端 xff0c 再pc端通过串口工具发送指
  • 今天了解Linux体系结构

    上一章我们了解了Linux的一些发展历史 xff0c 那么这一章我们来深入了解一下 xff0c Linux的体系及构成 Linux采用分层设计 xff0c 分层结构 xff0c 它包括 4 个层次 每层只能与相邻的层通信 xff0c 层次间
  • Ubuntu操作系统下Python多版本的安装与切换

    安装替代Python版本 打开终端 xff0c 看下系统中默认安装了按个版本的python 运行以下命令 xff1a python version 如果使用的是Ubuntu 20 04 xff0c 则默认情况下拥有的python版本3 8
  • 51单片机LCD1602液晶屏显示字符,字符串,(有)无符号整数,十六进制数,二进制数等

    1 前言 LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块 液晶显示模块具有体积小 功耗低 显示内容丰富 超薄轻巧等优点 xff0c 在嵌入式应用系统中得到越来越广泛的应用 xff0c 这讲中向大家介绍的LCD1602 液晶显示模

随机推荐

  • 51单片机——DS1302时钟

    目录 1 前言 1 1 实验现象 2 DS1302的介绍 2 1 DS1302的引脚定义以及应用电路 2 2 DS1302内部结构 2 21 DS1302内部特殊寄存器 2 22 时序 2 3 BCD码 3 源码 3 1 main c 3
  • 编译安装GCC12.2.0

    编译安装GCC 记录一下 xff0c 免得每次到处找 安装GCC12 2 0 xff0c 其他版本一样 源码下载地址 xff1a https ftp gnu org gnu gcc 备注 xff1a 配置若有不明白的 xff0c 多用 co
  • 安装vim

    sudo apt get install vim 确认后按y就行了 vim的三种模式 1 普通模式 当vim打开的时候就直接进入普通模式 在普通模式下可以进入命令 插入模式 2 插入模式 可以通过普通模式进入插入模式 插入模式可以编辑文本
  • jetson tx2 刷机,安装 cuda、opencv 详细教程

    jetson tx2 刷机 xff0c 安装 cuda opencv 详细教程 jetson tx2 的详细介绍和用途可见官网 xff1a Nvidia jetson tx2 接下来主要说明jetson tx2 详细刷机过程以及在过程中踩过
  • PX4 编译报错问题解决方法、PX4切换固定版本编译

    PX4 Autopilot 编译报错问题解决方法 1 make 2 没有规则可制作目标 dirlinks 停止 1 1159 Generating platforms nuttx NuttX nuttx config FAILED plat
  • ubuntu 系统狠慢 或者很卡的原因

    1 涉及内存小或者虚拟SWAP分区调整问题 可以通过 系统监视器 进行查看 在UBUNTU系统里面 xff0c 并不是你的物理内存全部耗尽之后 xff0c 系统才使用swap分区 xff01 系统的swappiness设定值 xff0c 对
  • 技巧1——怎样查看linux发行版本名称和版本号?

    假如我们加入了一家新公司 xff0c 需要为开发团队安装所需要的软件并且重启服务 首先要弄清楚它们运行在什么发行版本上以及在哪个版本的系统上 xff0c 才能正确的完成后续的工作 作为一名系统管理员 xff0c 充分了解系统信息是首要的任务
  • 种群共生模型

    种群共生模型 种群共生模型 1 1 背景 1 2 参数假设 1 3 分析 1 4 模型构建 1 5 模型求解 1 6 讨论平衡点稳定性 种群共生模型 1 1 背景 在自然界中 种族的共生现象是比较普遍的 如鳄鱼与千鸟 千鸟不但在鳄鱼身上寻找
  • opendaylight学习笔记——Flows

    Flow java中 private static final String WEB NAME 61 34 Flows 34 定义了在网页中显示时的名称 private static final String WEB ID 61 34 fl
  • NB-IoT 物理层相关

    写在前面 本文作为简单说明 xff0c 详细需具体查阅文档 1 关于 PRB 的理解 RB xff08 Resource Block xff09 xff0c 用于描述某些物理信道到资源元素的映射 xff0c 它有两个概念 xff1a VRB
  • 以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍

    网络设备中肯定离开不MAC和PHY xff0c 本篇文章将详细介绍下以太网中一些常见术语与接口 MAC和PHY结构 从硬件角度来看以太网是由CPU xff0c MAC xff0c PHY三部分组成的 xff0c 如下图示意 xff1a 上图
  • ubuntu(linux)下smb完整搭建流程-----原来如此简单,一步到位!!!!!!

    1 查看ubuntu版本号命令 lsb release a 2 下载安装 sudo apt get insall samba FAQ 如果出现apt install时候遇到E Unable to fetch some archives ma
  • xilinx fpga xdma

    一 下载XDMA文件 输入命令 sudo git clone https github com Xilinx dma ip drivers 二 编译文件 进入xdma文件夹 xff1a cd dma ip drivers XDMA linu
  • 网络通信原理及流程

    网络通信原理 1 1 互联网的本质就是一系列的网络协议 一台硬设有了操作系统 xff0c 然后装上软件你就可以正常使用了 xff0c 然而你也只能自己使用像这样 xff0c 每个人都拥有一台自己的机器 xff0c 然而彼此孤立吗 xff0c
  • LTE核心网介绍

    1 LTE网络架构 EPS包括核心网EPC xff08 EPC又包括MME xff08 信令处理部分 xff09 S GW xff08 数据处理部分 xff09 P GW xff09 E UTRAN xff08 只包含基站eNodeB一个网
  • FreeRTOS启动第一个任务和任务的切换(Cortex-M4)

    调度器是FreeRTOS操作系统的核心 xff0c 主要负责任务切换 xff0c 即在就绪任务中找出最高优先级的任务 xff0c 并使之获得CPU运行权 调度器并非自动运行的 xff0c 需要人为启动它 API函数vTaskStartSch
  • 1G~5G 网络结构演进过程

    无线接入网 xff1a 负责接收用户终端的无线信号 xff0c 由此接入到通信网络 xff1b 核心网 xff1a 对用户数据的管理及具体业务处理 xff0c 并作为承载网络提供到外部网络的接口 1 GSM网络结构 xff08 2G xff
  • 1G-5G 基站架构演进

    1 2G 2G通信系统采用3级网络架构 xff0c 即 xff1a BTS BSC 核心网 2G核心网同时包含CS域和PS域 2G通信系统起初主要采用一体式基站架构 一体式基站架构如下图所示 xff0c 基站的天线位于铁塔上 xff0c 其
  • NTP服务器

    1 NTP服务器 NTP协议是网络时间协议 Network Time Protocol xff0c 它是用来同步网络中各个计算机的时间的协议 它的用途是把计算机的时钟同步到世界协调时UTC xff0c 其精度在局域网内可达0 1ms xff
  • 对视频图像进行OSD叠加

    频叠加就是将图片和文字信息叠加到视频信号中 xff0c 如电视台的LOGO xff0c 电影的字幕 xff0c 电视机的菜单 xff0c 都是通过视频叠加的形式显示在视频图像中的 区别于用于专业影视编辑行业的字幕叠加器 xff0c 字符叠加