- 博客(27)
- 收藏
- 关注
原创 C++设计模式——建造者(Builder)模式:给公主换衣服
想必很多少男少女都玩过给公主换衣服的小游戏,我们如何用代码模拟这一过程呢?要求是我们需要给三个国家的不同公主完成戴帽子、穿衣服、穿鞋子三个不同的动作(我们用Id表示公主服装的编号)。#include <iostream>using namespace std;namespace _ChangeTheSuit{ class Princess { public: /* virtual void PutOnTheHat(string Id) = 0; virtual void
2021-03-05 19:40:46
645
原创 C++设计模式——原型(Prototype)模式
在玩一款叫《杀戮尖塔》的游戏时,里面有一个boss怪物叫史莱姆之王,它的技能是在低于自身血量一般时,分裂成两个血量上限为分裂前剩余血量的史莱姆。那么。我们如何使用C++来模拟这一行为呢?我们就要提到C++设计模式之一——原型模式。#include <iostream>using namespace std;namespace _SlayTheSpire{ class Monster{ public: Monster(int m_hp, int m_atk, int m_de
2021-03-04 09:43:18
1666
1
原创 《Effective C++》笔记(二)------ 构造、析构、赋值运算
构造、析构、赋值运算Item05:了解C++默默编写并调用了哪些函数。class Empty { public: Empty() {} //default构造函数 ~Empty() {} //default析构函数 Empty(const Empty& rhs) {} //copy构造函数 Empty& operator=(const Empty& rhs) {} //copy复制运算符 };结论1.编译器可以暗自为class创建default
2020-07-01 10:50:58
292
原创 《Effective C++》笔记(一)------ 让自己习惯C++
Item01:视C++为一个语言联邦CObject-Oriented C++Template C++STLItem02:尽量以const、enum、inline替换#define以编译器替换预处理器,const、enum、inline都是在程序编译阶段完成;#define ASPECT_RATIO 1.653const double aspectratio = 1.653;宏的名称可能在编译前就被预处理器移走,并没有进入符号表,所以编译错误信息也可能仅仅提到1.653,而非AS
2020-06-30 11:51:37
220
原创 C++轮子---设置可执行程序的标题
设置可执行程序的标题ps -eo cmd | grep -E '...' 可以让我们看见进程的标题,我们怎么做可以自己设置程序的标题呢?
2020-05-18 17:12:45
446
转载 ffmpeg查找编解码器decoder,encoder的两个接口
对于不同的编解码器有不同的AV_CODEC_ID_XX的,用avcodec_find_encoder() 就可以,但是对于一个ID对应多个编解码器的就不行了,比如aac,faac,fdk_aac,此时需要用avcodec_find_encoder_by_name() 查找对应的编解码器。当然,可以只编译一个aac,那么默认的就是你编译的那个/**Find a registere...
2020-04-21 20:28:07
505
原创 C++对象模型之虚基类表和虚函数表的布局(三)
c++对象模型之虚基类表和虚函数表的布局(三)注:本文的c++对象结构模型基于vs编译器的win32环境.链接: c++对象模型之虚基类表和虚函数表的布局(一).链接: c++对象模型之虚基类表和虚函数表的布局(二).三、虚基类和虚函数在前两篇文章中。我们分析了虚函数和虚基类相关的知识,现在我们把他们结合起来观察。class Grand{public: int m_grand =...
2020-04-12 15:33:52
463
原创 C++对象模型之虚基类表和虚函数表的布局(二)
c++对象模型之虚基类表和虚函数表的布局(二)注:本文的c++对象结构模型基于vs编译器的win32环境.链接: c++对象模型之虚基类表和虚函数表的布局(一).一、虚函数表(4)补充在上文中我们探究虚函数表空间布局的方式是直接用子类对象指针申请子类对象空间,如果我们用父类指针申请子类对象,编译器会如何处理呢? Base1* derived1 = new Derived; Base2...
2020-04-12 12:50:42
625
原创 C++对象模型之虚基类表和虚函数表的布局(一)
c++对象模型之虚基类表和虚函数表的布局(一)注:本文的c++对象结构模型基于vs编译器的win32环境,只有microsoft编译器处理虚基类时使用虚基类表的形式,而其他编译器大多采用在虚函数表中放置虚基类的偏移量的方式。一、虚函数表当一个类包含一个或多个虚函数时,编译器会在他的对象中创建一个虚函数指针,这个虚函数指针指向虚函数表,虚函数表里记录者这些虚函数的地址。很多人好奇虚函数指针、虚...
2020-04-11 22:09:05
803
原创 FFmpeg库简介
FFmpeg库简介一、FFmpegFFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。项目的名称来自MPEG视频编码标准,前面的"FF"代表"F...
2020-04-05 21:26:45
942
原创 FFmpeg 视频编码--------把 .rgb 变成 .mp4
FFmpeg 视频编码一、什么是视频编码?视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。二、FFmpeg开发中的视频编码流程(...
2020-04-02 22:15:37
2046
原创 FFmpeg 音视频解码
FFmpeg 音视频解码一、解码解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;压缩编码的音频数据输出成为非压缩的音频抽样...
2020-04-01 23:00:21
404
原创 c++11多线程学习 ------- std:lock_guard 类模板
c++11多线程学习 ------- std:lock_guard 类模板忘记unlock()就麻烦了呢!lock_guard() 懒人装置—自动加锁解锁//选自mutex.htemplate<class _Mutex> class lock_guard<_Mutex> { // specialization for a single mutexpublic:...
2020-03-30 22:24:26
525
原创 使用 visual Studio2015搞QT开发遇到的坑 (持续更新)
使用 visual Studio2015搞QT开发遇到的坑 (持续更新)使用版本:vs2015 Qt5.91. 无法打开源文件“ QtWidgets/QApplication ”解决方法:1.右键点击项目选择属性2.C/C++常规附加包含目录3.在Qt安装目录下找到你缺失头文件的位置,选择文件夹加入附加包含目录4.确定确定就好啦2. vs2015 已安装Qt Vs Too...
2020-03-26 17:20:03
1110
原创 FFmpeg 内存模型
FFmpeg内存模型分析通过前面的文章我们知道,AVPacket和AVFrame是储存着音视频解码前数据和解码后数据的重要结构体,我们使用av_read_frame()函数将解封装后的数据存入每个AVPacket,使用avcodec_receive_frame()函数将解码后的数据存入每个AVFrame,这时不可避免会出现储存空间的分配与释放问题,高明的FFmpeg是如何设计并解决这一问题的呢...
2020-03-24 20:50:03
561
原创 FFmpeg 音视频解封装
FFmpeg 视频解封装一、解封装解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。二、FFmpeg解封装结构体和函...
2020-03-21 20:32:26
761
原创 链表(c++)
数据结构--链表(c/c++)一、线性表(1)线性结构(2)合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入一、线性表线性表(...
2020-01-15 21:28:59
385
原创 Mask R-CNN算法详解(二)
Mask R-CNN详解+个人理解(附代码)(二)在上一章中我们讲到,Mask R-CNN是基于Faster R-CNN的优化版本,而其中最主要的优化在于,它在Faster R-CNN的基础上:加了一个Mask Prediction Branch (Mask 预测分支),并且改良了ROI Pooling,提出了ROI Align。我们先看看两种神经网络的结构图来进行对比:图一 Mask R-C...
2020-01-15 14:17:34
776
1
转载 BMP(位图)介绍
什么是BMPBMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。...
2019-10-24 21:13:53
5301
原创 Mask R-CNN算法详解
Mask R-CNN论文详解+个人理解(附代码)一、Mask R-CNN简介二、Mask R-CNN具体部件分析1.残差神经网络简介2.请看后续内容。
2019-07-18 16:53:55
2218
4
原创 Linux系统(Ubuntu18.04)中,Anaconda+pycocotools的安装
在Linux系统(Ubuntu18.04)中,Anaconda中 pycocotools的安装什么是pycocotools?在linux(Ubuntu18.04)系统中下载pycocotools问题一:报错“ModuleNotFoundError:No Module Named ‘pycocotools.coco’.”问题二:报错“ModuleNotFoundError:No Module Nam...
2019-07-16 15:24:07
5005
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人