Spark!
路人
展开
-
优化RGB转YUV计算效率
目录预备知识计算效率优化优化方法一优化方法二注意点代码.c.h效果预备知识详解YUV数据格式图像中,不管如何变换,我们最直观的值域是[0,255],所以我们也希望能有一个转换公式将值域统一在[0,255],这样就避免了后期处理和不必要的错误。值域为[0,255]常用的转换公式如下。1、YUV2RGB:2、RGB2YUV:这个公式转换后,不必在关心值域问题,很方便。计算效率优化整形计算比浮点数计算高效移位计算比乘除计算高效不了解的建议补充基础知识优化方法一浮点型运算比较耗时,原创 2021-08-30 17:34:27 · 1201 阅读 · 2 评论 -
制作一张YUV格式的图片
目录预备知识代码解释为什么使用移位不用数学运算?代码预备知识详解YUV数据格式代码解释可以通过修改宏定义来修改图像的尺寸可以通过修改YUV分量来对图像的颜色进行编辑为什么使用移位不用数学运算?答:良好的代码风格计算机中移位的效率比数学运算高得多(不了解的建议补充一下基础)代码#include <stdio.h>#include <errno.h>#include <stdlib.h>#include <string.h>#def原创 2021-08-30 13:02:38 · 1320 阅读 · 3 评论 -
dos文件格式与unix文件格式
目录前言结论检验区别如何区分通过notpad打开比对字符数vim中查看转换方法前言今天在项目的配置文件解析时出现错误,最终发现是由于在windows下创建文件和在linux下创建文件格式不同导致的。结论结论写在最开头dos文件换行为/r/nunix文件换行为/n检验区别wc -l -c tuya_uuid_key_dos.ini tuya_uuid_key_unix.inip08@ubuntu:~$ wc -l -c tuya_uuid_key_dos.ini tuya_uuid_ke原创 2021-05-17 13:02:07 · 855 阅读 · 0 评论 -
音视频OSD——使用freetype将矢量字库的信息叠加至YUV
目录freetypes使用步骤1)包含头文件:2) 初始化库:3)加载face对象:4)设置字体大小5)设置字体位置,以及旋转度数:6)加载字形图像准备矢量字库代码.c.h效果叠加至YUVfreetypesFreeType是一个完全开源的、可扩展、可定制且可移植的字体引擎,它提供TrueType字体驱动的实现统一的接口来访问多种字体格式文件下载freetypestar -xjf freetype-2.4.10.tar.bz2cd freetype-2.4.10/./configure原创 2021-04-23 09:55:58 · 1894 阅读 · 1 评论 -
音视频OSD完全教程
目录前言OSD 介绍学习路线基础知识ASCII点阵字库叠加信息相关操作GB2312点阵字库UNICODE UTF-8矢量字库前言感谢海康高级工程师宇哥和安霸高级工程师杰哥对我的无私帮助现有的博客内容都是抄来抄去,不成体系希望我整理的内容能够对行业有所帮助OSD 介绍on screen display就是将信息叠加到视频中更通俗的讲,就是写字有人说这一块内容简单,确实不难。觉得简单的可以直接退出不必浪费时间学习路线OSD是音视频dsp绕不开的一部分内容,内容较少,说不上难但一定算不上原创 2021-04-21 20:21:57 · 2192 阅读 · 0 评论 -
音视频OSD——将64*64的UNICODE_UTF-8字库的信息叠加至YUV图像
目录分析UTF-8编码字库制作分析字符编码——详解常用字符集(ASCII,ISO8859-1,GB2312,GBK,Unicode)和字符编码(UTF-8,UTF-16)分析UTF-8编码UTF-8编码中,使用的是变成的字节序列表示字符,字符对应的代码点code point可能使用的是1-4个字节,这样一个字节就是一个代码单元。一个代码点code point可能由1-4个代码单元code unit组成十进制Unicode编码UTF-8字节流0-1270x000000-0x00原创 2021-04-21 19:00:12 · 627 阅读 · 0 评论 -
音视频OSD——Unicode编码与UTF-8编码转换
目录转换原理代码.c.h检验转换原理十进制Unicode编码0-1270x000000-0x00007F128-20470x000080-0x0007FF2048-655350x000800-0x00FFFF65535-1141110x010000-0x10FFFF一般汉字都是在第三栏,UTF-8编码形如:1110xxxx 10xxxxxx 10xxxxxxunicode汉字编码一般为16位形如:xxxx xxxx xxxx xxxx转换方式如原创 2021-04-21 16:47:11 · 361 阅读 · 2 评论 -
音视频OSD——将64*64的GB2312字库的信息叠加至YUV图像
目录前言制作字库编码方式分析拿出一个字模.h文件.c文件效果通过输入来自动获取区位码.c效果最终代码.c.h效果前言之前我们学习了Ascii字库的叠加操作音视频OSD——将816字库的时间信息叠加至YUV图像音视频OSD——将6464字库的时间信息叠加至YUV图像音视频OSD——修改叠加信息的位置音视频OSD——修改叠加在yuv420p图像上信息的颜色音视频OSD——修改叠加信息的尺寸接下来进行汉字的学习在学习之前,需要理解汉字相关编码的知识字符编码——一些基本概念字符编码——简体中文原创 2021-04-20 16:16:58 · 750 阅读 · 0 评论 -
音视频OSD——修改叠加信息的尺寸
目录分析原理代码分析在实际场景中,可能出现字模尺寸使用不合理的情况,此时就需要对OSD叠加的信息进行相应的缩放。思路如下:放大:位图中每个点,在YUV图像中画四个点,即放大两倍缩小:位图中取奇数行或偶数行叠加至YUV图像,即缩小两倍在实际应用场景中,缩放用的不是很多,一般都是换一个尺寸的字库。如果放大两倍以上,字的锯齿感就会非常明显,如下图放大后就会很难看,如下图放大两倍以上就要换字库。缩小只能通过抽点来实现,抽完之后字会歪歪扭扭很难看。所以一般实现缩小都是换字库。原创 2021-04-19 15:34:19 · 611 阅读 · 0 评论 -
音视频OSD——修改叠加在yuv420p图像上信息的颜色
目录预备知识准备图片分析映射关系代码效果代码优化.c.h效果预备知识字符编码——一些基本概念字符编码——详解常用字符集(ASCII,ISO8859-1,GB2312,GBK,Unicode)和字符编码(UTF-8,UTF-16)音视频OSD——制作ASCII点阵字模并叠加到YUV图像中音视频OSD——将816字库的时间信息叠加至YUV图像音视频OSD——将6464字库的时间信息叠加至YUV图像音视频OSD——修改叠加信息的位置以上内容的叠加都是叠加在yuv的y分量上,若要改变颜色,则需要对y原创 2021-04-15 20:17:28 · 762 阅读 · 0 评论 -
音视频OSD——修改叠加信息的位置
介绍了修改OSD叠加位置的方法,防止OSD跨行叠加以及叠加内存越界的保护原创 2021-04-15 13:48:18 · 659 阅读 · 0 评论 -
音视频OSD——将64*64字库的时间信息叠加至YUV图像
目录前言分析制作不同尺寸字库判断图像尺寸前言音视频OSD——制作ASCII点阵字模并叠加到YUV图像中音视频OSD——将时间信息叠加至YUV图像前面我们制作了字库并且将时间信息叠加到了一个640x360的图像上,但之前的代码非常的不严谨。如果输入的图像是一个1080p的,那么8x16的字库显然就不够了,需要使用48x48或64x64的字库。如果我们需要叠加汉字,那么Ascii的字库就不能用了,就需要使用GB2312、GBK或UNICODE。分析步骤如下1、制作不同尺寸的字库2、分析图像原创 2021-04-09 15:36:55 · 1061 阅读 · 0 评论 -
音视频OSD——将8*16字库的时间信息叠加至YUV图像
↓前置学习↓音视频OSD——制作ASCII点阵字模并叠加到YUV图像中目录需求分析分析获取时间拿出对应字模检验叠加至初始位置.c文件头文件效果字体颜色、大小、位置可调需求分析将时间信息叠加到YUV图像中,并且位置、大小、颜色可调分析步骤如下:1、将当前时间放在字符串中2、依次找到每个字符的Ascii字模3、叠加在YUV图像的初始位置4、字体颜色大小可调5、位置可调获取时间使用sys/time.h中的自带函数gettimeofday和strftime#include <s原创 2021-04-08 08:14:23 · 1242 阅读 · 5 评论 -
音视频OSD——制作ASCII点阵字模并叠加到YUV图像中
目录流程ASCII字库的制作生成ASCII字库读取字库中的一个字符检验位图的制作在终端打印叠加到YUV的Y分量效果功能合并.c文件.h文件效果爷是代码诗人流程1、制作一个ASCII字库2、fopen将字库读到内存中3、制作对应的字模(BMP)4、将BMP叠加到一个YUV图像上1、只叠加Y分量2、支持修改颜色5、查看效果ASCII字库的制作生成ASCII字库使用fontMaker工具,做一组8*16的点阵字库如字符A的显示如下:当然,有可能你的图不是这样的,这是由于字体不同导原创 2021-04-01 21:22:18 · 1494 阅读 · 0 评论 -
字符编码——详解常用字符集(ASCII,ISO8859-1,GB2312,GBK,Unicode)和字符编码(UTF-8,UTF-16)
目录ASCII由来包含哪些字符采用什么字符编码,如何编码每个字符占几个字节ISO8859-1由来包含哪些字符采用什么字符编码,如何编码每个字符占几个字节GB2312由来包含哪些字符采用什么字符编码,如何编码每个字符占几个字节GBK由来包含哪些字符采用什么字符编码,如何编码每个字符占几个字节Unicode由来包含哪些字符采用什么字符编码,如何编码的UTF8UTF-16UTF-32总结本文详细分析常用字符集ASCIIISO8859-1GB2312GBKUnicode字符编码UTF-8U原创 2021-03-26 10:19:00 · 853 阅读 · 0 评论 -
字符编码——简体中文编码中区位码、国标码、内码、外码、字形码的区别及关系
目录区位码国标码(交换码)内码(机内码)区位码、国际码、内码的转换为什么要加上20H为什么加上80H本文以GB2312为例,讲述区位码、国标码、内码、外码、字形码区位码整个GB2312字符集分成94个区,每区有94个位,每个区位上只有一个字符,即每区含有94个汉字或符号,用所在的区和位来对字符进行编码(实际上就是字符编号、码点编号),因此称为区位码。换言之,GB2312将包括汉字在内的所有字符编入一个94 * 94的二维表,行就是“区”、列就是“位”,每个字符由区、位唯一定位,其对应的区、位编号合并原创 2021-03-25 10:02:53 · 4059 阅读 · 0 评论 -
字符编码——一些基本概念
这里写自定义目录标题字库字模位图(bmp--bit map)字库上图截取了GB2312字库的一部分。这整个二维数组就是字库,每一行就是一个字符字模拿出单独一行,就是一个字如下图,就是字模字模就是一个矩阵,里面0和1排列形成一个字左边是字模,右边是排列形成的字符上一个目录的字库中,一整行表示一个字。这一整行是将字模里的数据放在一行,只是字模在字库/内存中的存储形势。字库中的一行不是字模位图(bmp–bit map)...原创 2021-03-24 17:15:30 · 568 阅读 · 2 评论