自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 问答 (8)
  • 收藏
  • 关注

原创 auto_ptr、unique_ptr、shader_ptr的实现及简单了解

为什么要使用智能指针:智能指针的作用是管理一个指针,因为申请的空间在函数结束时忘记了释放,就造成了内存泄漏。使用智能指针可以很大程度上避免这个问题,因为智能指针就是一个类,当超出类的作用范围就会调用析构函数,析构函数就会自动释放内存资源。所以智能指针的作用就是在函数结束时自动释放内存空间,不需要手动释放;四种智能指针:auto_ptr 采用所有权模式智能指针的最基本功能:对超出作用域的对象进行释放。#include <iostream>struct Arwen{ void T

2022-03-04 11:27:35 681 1

原创 virtual的原理

虚函数:深度探索c++对象模型中提到,虚函数由两个步骤支持:1、每一个class产生一堆指向virtual functions 的指针,放在表格中,这个表格被称为 virtual table (vtbl)2、每一个class object 被安插一个指针,指向相关的Virtual table。通常这个指针被称为vptr,每一个class所关联的type_info object(用于支持RTTI)也经由 virtual table 被指出来,通常放在表格的第一个格c++的虚函数是实现多态的机制。虚函

2022-02-24 20:07:39 432

原创 static关键字的使用

static修饰局部变量:第一次运行到定义时初始化,程序终止销毁局部静态变量由原来的栈中存储变为静态存储区,作用域为局部作用域,当定义它的函数或者函数块结束,作用域结束。但是当局部静态变量离开作用域后,并没有销毁,而是一直留在内存中,只不过不能对他在进行访问,直到再次被调用,并且值不变;#include <iostream>using namespace std;int localStatic(int value){ //局部静态变量 static int local_

2022-02-23 09:05:27 499

原创 const和三种类型传递

局部静态变量:第一次运行到定义时初始化,程序终止销毁参数传递:值传递:函数对形参的所有操作不会影响实参;指针传递:执行拷贝操作时拷贝的是指针的值。拷贝到后两个指针是不同的指针;void reset(int *ip){​ *ip = 0; //改变的是指针所指的对象​ ip = 0; //改变的是ip的局部变量,实参并未改变}int main(){​ int i = 40;​ reset(&i); //改变的是 i 的值并非是 i 的地址​ std::cout <&

2022-02-14 09:55:23 535

原创 windows下qt的环境配置

首先进入国内清华大学的镜像网站,当然官网也可以不过下载速度…https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/5.12/5.12.0/下载完成后我们开始安装:首先进入第一页面直接点击next;之后进入注册登录和注册页面如果是第一次的话需要先进行注册注册完登录看下图之后进入要安装的文件夹,我在d盘自己新建了一个文件夹注意重点:进入选择组件页面大家可以根据自己的需要选择对应的组件,其中的msvc就是vs,强烈建议大家把

2021-06-15 23:58:27 1299

原创 FFmpeg旧视频解码流程和新视频解码流程介绍

旧视频解码流程(1)API注册av_register_all()(2)查找解码器解码前需要根据封装中的视频编码压缩格式进行查找,找到对应的解码器:AVCodecContext *dec_ctx;AVStream *st = fmt_ctx->streams[stream_index];AVCodec *dec = NULL;dec = avcodec_find_decoder(st->codecpar->codec_id);if(!dec){ fprintf

2020-09-27 05:28:38 654

原创 FFmpeg旧视频编码和新视频流程

旧视频编码调用流程(1)API注册仅仅使用libavcodec部分的接口,所以在注册使用FFmpeg接口时,可以使用avcodec_register_all进行注册avcodec_register_all();(2)查找编码器注册操作完成之后,首先需要查找自己使用的编码器,可以通过接口avcodec_find_encoder来设置:AVCodec *codec;codec = avcodec_find_encoder(codec_id);if(!codec){ fprintf(

2020-09-26 10:33:39 305

原创 笔记——H.264/AVC与H.265/HEVC基本总结

H.264/AVC与H.265/HEVCH.264/AVCH.264是什么H.264/AVC/高级视像编码是数字视像压缩标准数据压缩率是MPEG-2、H.263视像压缩标准的2~3倍主要技术1、帧间预测采用可变图块的帧间预测和移动补偿,预测图快的大小不在局限于16 * 16像素,而是可小到4 * 4像素,提高了移动矢量的预测精度2、帧内预测帧内预测图块的大小可以是1616的宏块,也可以是44像素的图块,而且定义了多种预测方式,目的是找到匹配最佳的预测图块3、采用整数变换从DCT演变而来

2020-09-23 08:09:10 2653

原创 笔记——MPEG视像

时间冗余 在某个时间间隔上出现场景形同或基本相同的连续帧时,帧与帧之间存在大量的冗余数据。这些与时间相关的冗余称为时间冗余空间冗余 在单帧图像中,相邻像素的值常有相同或变化不大的情况,可用较少的数据表达这些像素的值,这些与空间位置有关的冗余称为空间冗余结构冗余 如果从宏观上来看一帧图像,有些图像存在着相同或类似的结构,如用矩形图案构成的图像。这种图像自身构造的冗余称为结构冗余视觉冗余 人的规觉系统具有许多特性,如对围使中的老度变化的端用对意色变化不能感,对图像中刚烈变化

2020-09-22 18:40:53 383

原创 笔记——数字语音编码基础概念

声音是什么声音是听觉器官对声波的感知,而声波是通过空气或其他媒体传播的连续振动。声音的强弱体现在声波压力的大小上,音调的高低体现在声音的频率上频率信号的频率是指信号每秒钟变化的次数,用Hz表示频率为20Hz~20kHz的信号都称为声音,20Hz ~ 20kHz范围的频率称为声音频率,简称为“音频(声率)”高保真声音(high fidelity audio): 10 ~ 20 000Hz;声音(audio/ sound); 20 ~ 20000Hz;语音( speech/ voice) : 30

2020-09-22 07:51:43 1220

原创 笔记——颜色度量和颜色空间

色调色调又称色相,指颜色的外观饱和度是对于明度的一个区域的色彩,是指颜色的纯洁性,他可以用来区别颜色的明暗的程度亮度明度视觉系统对可见物辐射或者发光多少的感知属性亮度亮度是用反映视觉特性的光谱敏感函数加权之后得到打的辐射功率,并在555nm处达到了峰值,他的幅度与物理功率成正比。从这个意义上说,可以认为亮度就像光的强度。颜色空间用色调、饱和度和明度构成的一种颜色空间Munsell颜色系统是精确指定颜色和显示各种颜色之间关系的一种方法,每种颜色都有色调、明度值和色度三种属性。广泛使

2020-09-22 07:48:39 668

原创 笔记——数字图像基础

数据压缩的主要思想对图像中许多重复数据,使用数学方法来表示这些重复数据可减少数据量人的眼睛对图像细节和颜色的辨认有一个极限,把超过极限的部分去掉,就达到了压缩数据的目的图像的颜色模型颜色模型用数值指定颜色的方法颜色空间用空间中点的集合描述颜色的方法显示图像用RGB相加混色模型有源物体一种能发出光波的物体称为有源物体RGB相加混色模型组合三种光波产生特定颜色的方法叫做相加混色法用RG和B颜色分量产生颜色,故称为RGB相加混色模型。颜色=R(红色百分比)+G(绿色百分比)+B(蓝色百

2020-09-22 07:45:48 936

原创 笔记——数据无损压缩

冗余的概念:人为冗余:①在信息处理系统中,使用两台计算机做同样的工作是提高系统可靠性的一种措施。在这样的系统中,一台计算机在工作,而另一台计算机处于等待状态。如果正在工作的机器出现故障,则由处于等待状态的机器马上接替,我们就说这样的系统是冗余的系统,备用设备称为冗余设备。②在数据存储和传输中,为了检测和恢复在数据存储或数据传输过程中出现的错误,根据使用的算法的要求,在数据存储或数据传输之前把额外的数据添加到用户数据中,这个额外的数据就是冗余数据。从上可以看出,冗余设备和数据冗余都是人为添加的,目的是

2020-09-22 07:40:29 692

原创 笔记——数字视频基础

数字视频基础概念:视频由许多幅按时间排列的连续图像组成,每幅完整图像称为一帧(Frame)。图像是视频信号的基本单位,每一幅图像的内容不同,整个图像序列按时间顺序播放看起来就是活动的图像。由于视觉暂留机理,当连续播放图像每秒超过24帧以上时,人眼无法辨别单幅的静态画面,图像序列看上去是平滑连续的视觉效果,这样连续的画面叫作视频。视频技术泛指将一系列的图像以电信号方式加以捕捉、纪录、处理、存储、传送与重现的各种技术。数字视频就是以数字形式记录的视频,数字视频由一幅幅数字图像组成,每幅图像由N行

2020-09-17 16:49:25 1379

原创 笔记——H.265/HEVC视频压缩与编码概述

图像是视频信号的基本单位。为了静止与静止图像相区别,视频中完整图像通常被称为帧,由许多帧按照时间顺序组成的视频被称为视频序列。视频序列中的每幅图像,都是由N * M个像素组成的,每个像素都有具体的数值。因此视频序列可以表示为三维矩阵,其中N * M这两个维度表示每幅图像的像素值,行成视频的空间域;另一个维度则代表时间域。码率:视频码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始.

2020-09-17 16:45:03 2364

原创 笔记——H.264/AVC编码器原理基础

H.264的优势和特性:1、将每个视频帧分离成由像素组成的块,因此视频帧的编码处理的过程可以达到块的级别。2、采用空间冗余的方法,对视频帧的一些原始块进行空间预测、转换、优化和熵编码(可变长编码)。3、对连续帧的不同块采用临时存放的方法,这样,只需对连续帧中有改变的部分进行编码。该算法采用运动预测和运动补偿来完成。对某些特定的块,在一个或多个已经进行了编码的帧执行搜索来决定块的运动向量,并由此在后面的编码和解码中预测主块。4、采用剩余空间冗余技术,对视频帧里的残留块进行编码。例如:对于源块和相应预测

2020-09-16 14:55:55 919

原创 笔记——视频编码标准

H.261标准由于会议电视和可视电话的需要,CCITT 发布了码率为 p×64Kbps(p=1,2,3,4,5,30) 的 H.261 建议,这个视频编码方案对以后各种视频编码标准产生了深远影响,直至今天。图像格式:H.261 用于视频通信,会产生多个国家的互通困难的问题,不同国家采用不同的彩电制 式,不可能直接互通。H.261 采用一种公共中间格式(CIF,Common Intermediate Format), 不论何种彩色格式,发送方先把自己国家的彩电制式转换成 CIF 格式,经 H.261 编

2020-09-15 20:10:18 840

原创 数字电视基础

预测编码:同一幅图像中像素之间具有较强的相关性,两个像素之间的距离越短,则其相关性越强,通俗地讲,即两个像素的值越接近。视频编码系统的基本结构:摄像机->分析(编码器)->量化(有损的)->二进制编码(无损的)->信道->二进制编码->返量化->综合(解码器)->显示器数字电视的优点:(1)失真小、噪声低、质量高(2)易处理、已校正(3)容量大、节目多量化:取样后的脉冲信号在时间上是离散的,但在幅值上空间上仍是连续的,及其可能取得值有无限多

2020-09-15 19:11:25 274

原创 libavformat的使用

libavformat是FFmpeg中处理音频、视频以及字幕封装和解封装的通用框架,内置了很多处理多媒体文件的Muxer和Demuxer,它支持如AVInputFormat的输入容器和ABOuputFormat的输出容器,同时也支持基于网络的一些流媒体协议,如HTTP、RTSP、RTMP等音视频流封装#函数介绍avformat_alloc_output_context2() 初始化输出上下文avformat_free_context() 释放输出上下文avformat_new.

2020-09-07 17:30:15 2685 3

原创 一文读懂时间复杂度——大O表示法

算法时间复杂度定义在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记做:T(n) = O(f(n))。它表示随时间问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。这样用大写O()来体现时...

2020-05-03 20:11:55 1799

原创 shared_ptr智能指针总结

智能指针new在动态内存中为对象分配空间并返回一个指向该对象的指针,delete,接收一个动态对象的指针,销毁对象,并释放与之相关联的内存。为了更容易更安全的使用动态内存,新标准提供出了两种智能指针类型来管理动态对象。智能指针的类型类似于常规指针,重要的区别是它负责自动释放所指向的对象。而这两种指针的区别在于管理底层指针的方式:shared_ptr允许多个指针指向同一个对象;unique_p...

2020-04-21 19:45:55 204

原创 C语言常用标准库函数整理

标准库函数是一个工具箱,极大的扩展了C语言的能力整形函数这组函数返回整形值。这些函数分为三类:算数,随机数 和 字符串转换。算数:<stdlib.h>函数原型:int abs( int value);返回它参数的绝对值。long int labs( long int value);返回参数的绝对值。div_t div ( int numerator,int...

2020-04-08 20:27:44 1077

原创 笔记——Linux常用命令整理

Linux常用命令1.常用系统目录规范/bin:主要是放置系统工具文件的目录/home:home目录是主目录也就是家目录,用户登录后所在的就是home目录/lib:用来存放库文件的目录/usr/include:用来存放头文件的目录2.常用Linux命令文件管理ls:列出目录内容格式:ls [参数] [目录名]-l:以列表的方式查看其中d开头是目录文件(文件夹)-开...

2020-01-04 19:06:44 210

空空如也

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

TA关注的人

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