自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (4)
  • 收藏
  • 关注

原创 pcm 转 G711a/u

pcm 2 g711a(输入13位编成8位)1.将pcm二进制 转成 排列:x xx…x1 xxxx xxxx…2.符号位取反3.根据从高位起,第一个 1 的位数 查表4.wxyz为 第一个 1 后四位5.获取完 seeewxyz 之后,除符号位外,其他位 偶数位取反 奇数位保留。例:输入pcm数据为3210,二进制对应为(0000 1100 1000 1010)二进制变换下排列组合方式(0 0001 1001 0001010)(1) 获取符号位最高位为0,取反,s=1(2)

2021-10-07 15:37:59 2790

原创 1.OSD功能学习

目录前言:功能1.横向显示三种颜色功能2.纵向显示三种颜色功能3.左右与上下拼接以上两张照片功能4.在YUV图片上显示 竖线横线斜线(考虑斜率)功能5.在终端打印ASCII字模功能6.在YUV图片是叠加单个Ascii字模功能7.获取实时时间信息并叠加至YUV(考虑行越界)功能8.终端打印GB2312、Unicode UTF-8单个汉汉字(用VSCODE自动解析)功能9.汉字在YUV的叠加功能10.汉字在项目OSD模块中的叠加前言:​ 在前面了解完整个音视频工程的框架之后,开始对框架中各个模块的功能进行学

2021-09-15 17:04:33 1664

原创 8,.OSD叠加学习之汉字在YUV的叠加

目录思路:区别步骤:生成 GB2312 字库:获取区位码最终实现图思路:前篇已经熟悉了 ASCII码 字模的叠加,其实汉字的叠加与ASCII是一样的思路。不过就是 字典(字库)不同,表示的方法不同而已。相同的还是 计算偏移量,利用偏移量从 字典中 获取想要的字符。不清楚的请移步上篇上面说到,字库与字库存储的方法是不一样的,我用的是 GB2313。所以我们得先去学习相关知识。请移步:了解 GB2313区别步骤:生成 GB2312 字库:将字符集类型改为 GB2312 即可。获取区位码我们要

2021-09-15 16:51:53 1293 1

原创 7,.OSD叠加学习之在YUV图片是叠加单个Ascii字模与获取实时时间信息并叠加至YUV图片(考虑行越界)

目录在YUV图片是叠加单个Ascii字模思路:代码:获取实时时间信息并叠加至YUV图片思路:代码:在YUV图片是叠加单个Ascii字模思路:在上一篇博文中,我们已经成功在终端成功打印了字模,依照之前的思路。在YUV图片上打印同理。遍历字模文件,有 1 就给对应的 YUV 数值, 0 就保持原来分量。同样需要注意的就是 换行问题。而显示叠加多个字模也就是叠加一个字模的循环叠加。需注意的就是偏移量间隔的控制总的思路就是 获取 --> 遍历 --> 打印代码:int LUX_check_L

2021-09-15 16:51:29 924

原创 6.OSD叠加学习之在终端打印ASCII字模

目录思路思路我们最终的目的是实现字母或文字叠加到 YUV图片中,在之前几篇文章中,我们已经熟悉并实现了对YUV图片的操作。所以接下来就是字模的认识并叠加到YUV图片中。首先,我们先从最简单的开始—在终端打印ASCII字模在操作之前,需要先去了解下 字符编码的来源与组成。ASCII 是最初也是最简单的字库,由 7bit 表示,也就是0-127,存储着128个字模.如图我们只需 使用点阵生成工具 设置好 表示一个字模的 长宽之后,保存字库。我们就可以得到存储 96 个字模的字库(注:因为ASCII码

2021-09-15 16:51:06 700

原创 5.OSD叠加学习之在YUV图片上显示 竖线横线斜线

目录实现效果图:实现思路:代码编写实现效果图:实现思路:无论是显示 竖线横线还是斜线,无非是对 多个连续的 像素点进行操作,明白了一个像素点如何点亮,加个循环偏移量,线也就成了。所以先来说说单个像素点。图片组成如图:Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y YY Y Y Y Y Y Y YY Y Y Y Y Y Y YU U U U U U U UV V V V V V V V YUV420,Y:U: V = 4:1:1,也就是说,图中一

2021-09-15 16:50:42 1049

原创 4.OSD叠加学习之左右与上下拼接

目录最终实现图:实现思路:代码编写最终实现图:左右拼接上下拼接实现思路:这左右上下拼接思路与前面的横向纵向显示 思路差不多 ,甚至更简单就不多说了(不了解请移步)。代码编写/*图片左右拼接*/int LUX_YUV_ColorSplice(char *file1,char *file2){ int Ret = 0; int height = 0; int yuvSize =

2021-09-15 16:50:11 621

原创 3.OSD叠加学习之纵向显示三种颜色

目录最终实现图:实现思路:代码编写:最终实现图:实现思路:在之前的基础上(不了解的同学,请移步之前同系列文章),实现以上效果图思路也很简单。但需要知道,YUV图片像素点是从左往右 一行一行的刷的。所以实现上方图,就需要在 特定偏移量 来个断层。如图:Y 分量的话 我们就需要 将每一行的 640 前设为 红色的 Y 分量,640-1280设为绿色的 Y 分量 ,1280-1920 设为蓝色的 Y 分量。在代码中用循环去写就可以了 UV同理 。代码编写:/*纵向显示颜色*/int LU

2021-09-15 16:49:36 435

原创 2.OSD叠加学习之横向显示三种颜色

目录最终实现图:实现思路:最终实现图:实现思路:学习完 YUV图片格式 之后,我们就知道了 一张 1920 * 1080 YUV420 图片的大小为 1920 * 1080(Y)+ 1920 * 1080 /4(U)+1920 * 1080 /4(V),即 1920 *1080 *3/2个byte。图片的前 1920 * 1080个字节 都为 Y ,后面的为UV,即4个Y对应一组UV。如图(类似其他自己脑补)Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y YY Y Y Y Y Y

2021-09-15 16:49:10 812

原创 关于memcpy 在循环里只写入一部分数据的问题

在写小功能的时候,使用memcpy API的时候,出现了在循环中,只写入了第一行的数据 其他都没有写入的BUG。如:循环里 没有写入,但像注释掉的那样学就能写入。这是为什么呢一开始,以为是对 memcpy 用法理解错误。就去查了下,API说明。void *memcpy(void *str1, const void *str2, size_t n)第一个参数是 需要传的是一个指针。没错呀。这让我一筹莫展。往往 啥都没问题的 时候 错误可能就出现在 最简单的地方。直到我想到了要写入的文件没错

2021-09-05 21:54:40 412

原创 初识字符编码

先来听个故事我们都知道,计算机的语言 二进制,在计算机中 使用二进制代表所有数据一开始 USA人用 1个字节 其中的低七位 也就是 128个数来表示他们的 字母和字符 如 A:65这就出现最初的编码方式 ASCii码但是 问题就来了 其他国家也要 使用计算机把 不能让USA 自己发展吧那其他国家也有自己的语言吧,所以有的国家使用了整一个字节,但相对于 亚洲国家的语言,显然一个字节是远远不够的。同时 每个国家都对 0-127 之后的位数有各自的定义。导致自己做的东西不能 出售到别的国家。这肯定

2021-09-03 19:36:34 343

原创 C语言规范个人新认知

头文件1.禁止头文件循环依赖即不能出现多个.h文件形成 循环包含的情况。如:a.h包含b.h,b.h包含c.h. c.h包含a.h. 类似这种三者相互包含,这样就会导致修改其中一个.h文件,都会造成其他文件都需要重新 编译的情况2.总是编写内部#include保护符(#defune 保护)多次包含一个头文件的问题在人为上可以通过认真的设计来避免,如果我们水平未达到或无法避免,就需要采取阻止头文件内容被包含多于一次的机制。通常的手段是使用 #ifnden,#define,#endif. 去配置一个宏

2021-09-01 16:12:10 406

原创 4.音视频工作流程分析 — Encode 视频编码模块

本骗对 Encode 视频编码模块 进行分析整体流程图****为什么要编解码? 其中最主要的原因 有利于数据传输 学过 通信原理 的同学 可以用信道 带宽等相关概念来类比理解。视频编码(H264, H265, JPEG)模块,包含编码通道管理,编码参数设置等功能。Encoder 模块内部结构:如上图所示,编码模块由若干个 Group 组成,每个 Group 由编码 Channel 组成。每个编码 Channel 附带一个输出码流缓冲区,这个缓冲区由多个 buffer 组成。目前 T31 上

2021-08-27 19:50:39 475 1

原创 3.音视频工作流程分析 — OSD

整体流程图OSD 的全称是 On-Screen Display。模块的功能就是在每张片源中叠加线条、图片等信息。OSD模块 可以让我们在视频流上 任意区域 去添加 任意内容 如 水印 时间 LOGO等相关概念Region 即是叠加区域,在 API 中简称 Rgn。每个 Region 具有一定的图像信息,可以经过OSD模块叠加后,与背景图像合为一张图片。对于图片的叠加,还可以实现Alpha效果模块框图由框图可知,OSD模块的组成:一个背景通道,四个OSD 通道,OSD叠加器。叠加原理,在

2021-08-27 16:14:58 1263

原创 IIC 时序分析

IIC 个人总结IIC:(按位传输的串行半双工总线),一个字节传输组成:主机,从机,SCL(时钟线),SDA(数据线),总线,两个上拉电阻。主机:可以从总线接收或向发送从机:只能从总线接收时钟线SCL:控制时钟数据线:控制数据的收发SCL,SDA两者配合,实现数据的收发起始条件:数据开始传输的条件,SCL高电平,SDA由高电平到低电平停止条件:数据传输结束的条件,SCL高电平,SDA由低电平到高电平从机应答:主机发送完数据,释放SDA线,SDA被上拉电阻拉高,从机保持SCL高电平,

2021-08-27 10:35:24 814

原创 2.音视频工作流程分析 —-FrameSource

以下几篇文章都将针对 音视频工作的各个模块 进行分析整体流程图再讲 FrameSource 视频源之前,先讲一个非常重要的部分 — GROUP与Channel。Group 是一路数据输入的最小单位。一个 Device 可以有多个 Group,每个 Group只能接收一路数据输入,Group 可以有多路输出。两个 Group 经过 Bind 连接后,源 Group 的数据会自动发到目的 GroupChannel 通常指一个单一功能的单元,Channel 在 Create 时(实例化)时被指定具体

2021-08-27 10:28:12 694 2

原创 1.音视频工作流程分析 —— ISP

以下几篇文章都将针对 音视频工作的各个模块 进行分析整体流程图在此,我们先对第一环 isp 进行分析。ISP——Image Signal Process图像信号处理ISP 通过一系列数字图像处理算法完成对数字图像的效果处理。主要包括 3A、坏点校正、去噪、强光抑制、背光补偿、色彩增强、镜头阴影校正等处理图像信号处理单元。主要包含图像效果设置、模式切换以及 Sensor 的注册添加删除等操作。ISP在本项目中,扮演的角色大体有两部分是1.从sensor(镜头感光传感器) 获取图像2.对

2021-08-27 09:24:38 745

原创 虚拟机 无法 连接MobaXterm类似软件 解决方法

虚拟机 无法 连接MobaXterm 解决方法当我们想用类似于 MobaXterm 类似软件连接 虚拟机时。当确认两者之间在同一个网段,两者能ping通的情况下,还是无法进行链接时。很可能是我们虚拟机 的 SSH 服务没有打开。具体打开步骤:1,更新源 sudo apt-get update2,安装SSH sudo apt-get install openssh-server3, 启动SSH/etc/init.d/ssh start上述步骤完成之后,我们就可以进行链接了。SS

2021-08-26 18:07:03 1862 2

原创 条件编译初识

条件编译:源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部 分内容指定编译的条件.当满足条件时 才执行相关代码段,相关宏 #ifdef, #ifndef, #if, #endif 。常用于1.防止被重复包含。常见格式:#ifndef _STDIO_H_#defind _STDIO_H_...#endif表示 如果未定义,则定义头文件。在大学单片机中,常用于防止多次包含头文件。我们要将多个.c文件编译成一个可执行文件。如果多次包含头文件,就会

2021-08-21 11:06:44 80

原创 视频缓存池

视频缓充池官方解释:个人理解:我们进行音视频开发,本质上就是对图像数据按一定顺序进行处理。拿海思平台的举例,数据从sensor进来按照经过VI,VPSS,VENC模块的顺序进行图像处理。但在实际的程序中,不是一个线程来完成这整个流程。而是每一个单独模块分别使用一个线程去处理。这样的话,这些模块之间是异步的。这样的话,怎么来保证数据的有序处理呢?怎么保证各模块之间不会互相影响呢?这就需要使用 缓存池 来解决。顾名思义,其就是用来暂存数据的。相信说到这,各位已经有了缓存池的概念与作用。如果还没有,

2021-08-05 14:18:33 213

原创 java 抽象类与接口的区别 个人笔记

抽象类abstract class与接口interface的区别抽象类为在父类中定义抽象方法,在继承子类中实现的设计方法。接口是构造一个仅含有抽象方法抽象类 用来提供给其他类对接方法注:抽象方法必须用abstract 定义两者区别继承可以同时含有抽象方法和方法实现,当添加一个方法实现时,子类会正常继承,不会有影响。而接口只能有抽象方法提供给其他类对接,并且每当向接口中添加一个抽象方法时,所有实现这个接口的类就会失效,因为你必须在这些类中编写增加的抽象方法。由于java的单继承性,子类只能

2021-05-13 17:16:17 48

main-个人练手项目

main

2022-04-29

字摸叠加代码文件(不含YUV颜色显示)

字摸叠加代码文件(不含YUV颜色显示)

2021-09-15

人脸识别信息思路即例程(基本功能).zip

树莓派人脸识别基本功能实现

2021-04-19

寒假嵌入式 笔记.docx

个人学习嵌入式 linux 笔记 应用方向

2021-04-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除