C++
文章平均质量分 66
S.Z.Zheng
这个作者很懒,什么都没留下…
展开
-
判断文件名字符串是否为指定扩展名
判断文件名字符串是否为指定扩展名#include <iostream>#include <string>using namespace std;int main() { string fn = "test1.JPG"; if (fn.substr(fn.find_last_of(".") + 1) == "JPG") { cout << "是.JPG文件" << std::endl; fn = fn.substr(0, fn.length原创 2021-01-15 14:47:43 · 401 阅读 · 0 评论 -
MPEG-1 Audio Layer II编码原理及编码器调试
MPEG-1 Audio Layer II编码原理及编码器调试模拟音频信号数字化后通常具有极高的码率,例如对于取样频率为44.1 kHz的双声道CD数字音频而言,采用16 bit量化,无压缩码率可达1.41 Mbps,非常不利于存储和传输。因此,为了节省存储空间、提高传输效率,必须要对数字音频信号进行压缩编码。一. 数字音频信号压缩的可能性无压缩的数字音频信号中主要存在两方面的冗余信息:一是声音信号中本身存在的冗余:信号幅度分布是非均匀的(小幅度的样值比大幅度样值出现的概率高),且样本之间存在相关性原创 2020-06-11 16:57:56 · 2086 阅读 · 0 评论 -
JPEG编解码原理及C++调试
JPEG编解码原理及C++调试JPEG(Joint Photographic Experts Group,联合图像专家小组),是一种针对数字图像的有损压缩标准方法,问世于1986年,并于1992年获得了ISO 10918-1的认定。鉴于JPEG编码算法可以在提供较大的压缩比的同时,保持较好的显示质量,JPEG逐渐成为最为熟知和广泛使用的数字图像格式和通用标准。目前JPEG文件最常用的扩展名为 .jpg 和 .jpeg,同时也有部分使用 .jpe、 .jfif 和 .jif。本文将简要说明JPEG编解码原创 2020-05-30 10:25:16 · 3548 阅读 · 2 评论 -
使用DPCM进行图像压缩的C++实现方法
使用DPCM进行图像压缩的C++实现方法我们知道,对于图像或视频的每一帧而言,相邻的像素之间有着较强的相关性——除了在边缘、轮廓等位置,相邻像素的像素值相差并不大,也就是说,图像或视频的一帧中存在着很大的空间冗余。而DPCM(Differential Pulse Code Modulation,差分脉冲编码调制)便是一种简单而高效的去冗余算法。基本原理DPCM对于去除引言中提到的空间冗余,...原创 2020-05-04 10:35:30 · 1390 阅读 · 0 评论 -
LZW编解码算法的基本原理及其C++实现
LZW编解码算法的基本原理及其C++实现LZW编码(LZW Encoding)又称“串表压缩算法”,由J.Ziv和A.Lempel在1978年首次介绍,并由Terry A.Welch在1984年予以改进,最终该编码方法由三人的名字命名。该编码方法属于词典压缩编码方法。词典编码是一种通用编码方法,适用于无法观察新源统计特性,或虽然可观察但统计特性不固定的情形。LZW编码可应用于通用文件压缩(如...原创 2020-04-25 12:41:05 · 4249 阅读 · 2 评论 -
TGA转换为YUV的C++实现方法
TGA转换为YUV的C++实现方法TGA(或TARGA)格式,是Truevision公司开发的一种用于描述位图图像的格式,它能够表示从黑白、索引颜色到RGB颜色的位图,支持Α通道,并支持多种压缩方法,兼具了体积小和效果清晰的特点,成为了CG领域影视动画的常用序列输出格式。本文通过C++,实现了将TGA格式图像转换为YUV格式。暂时只讨论Image Type Code为2(无压缩、无调色板的RG...原创 2020-04-04 20:01:01 · 617 阅读 · 0 评论 -
直方图均衡的C++实现方法
直方图均衡的C++实现方法一. 原理灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数,即h(k)=nk(k=0,1,⋯ ,L−1)h(k)=n_k\quad (k=0,1,\cdots,L-1)h(k)=nk(k=0,1,⋯,L−1),其中LLL为图像的灰度级数。直方图均衡的目的是将图像的直方图修正为均匀分布形式(离散分布做不到完全均匀,但可以接近),增加像素灰度值的动态范...原创 2020-04-03 17:02:51 · 2153 阅读 · 0 评论 -
TS(传输流)的PAT(节目关联表)分析
TS(传输流)的PAT(节目关联表)分析对于一段TS(Transport stream,传输流),进行PAT(Programme association table,节目关联表)分析,读取其中PMT(Program map table,节目映射表)的PID。代码如下:#include <iostream>using namespace std;// 全局变量int pkt...原创 2020-03-30 17:42:57 · 999 阅读 · 1 评论 -
RGB与YUV色彩空间的相互转换
RGB与YUV色彩空间相互转换原理RGB与YUV空间的对应关系根据电视原理的相关知识可知,RGB与的YUV对应关系为:{Y= 0.299 R+0.587 G+0.114 BU=−0.1684 R−0.3316 G+0.5 B=0.564 (B−Y)V= 0.5 R−0...原创 2020-03-21 20:30:35 · 2337 阅读 · 1 评论 -
CIF下变换为QCIF
#include <iostream>using namespace std;int main(int argc, char* argv[]){ FILE* cifPtr; // CIF文件指针 FILE* qcifPtr; // QCIF文件指针 const char* cifName = argv[1]; // CIF文件名 const char* qcifName...原创 2020-03-21 14:21:50 · 298 阅读 · 0 评论 -
C/C++中进行文件读写的方法
在C++中进行文件读写有多种方法,在这里介绍其中的一种,只需要最基本的iostream头文件即可。代码#include <iostream>using namespace std;// 文件路径const char* inPath = "...";const char* outPath = "...";int main(){ // 文件指针 FILE* inFi...原创 2020-03-12 23:44:04 · 711 阅读 · 0 评论 -
求RGB图像各分量的概率分布和熵
功能该程序可以实现读入一个24bit RGB文件(以down.rgb为例,分辨率为256×256),计算R、G、B三个分量(各8bit表示)的概率分布和熵,并输出到txt文件中。 down.rgb 需要注意的是,与YUV文件不同,RGB文件是按照每个像素的b、g、r分量依次排列而成。代码为了清晰,将程序写在globalVariables...原创 2020-03-10 14:02:56 · 1721 阅读 · 1 评论 -
在C++中正确使用多文件和全局变量的方法
假设有这样一段程序:#include <iostream>using namespace std;int a = 12; // 全局变量void func(int x) { cout << x + a << endl;}int main() { int b = 10; func(b);}现在希望将func函数单独写为一个文件,...原创 2020-03-10 00:01:38 · 683 阅读 · 0 评论 -
C++中的数据类型及其表示、计算方法
任务1:计算机编程中的数据类型一. 整型(int/unsigned int)1. 机器数原码:由符号位(正数为0,负数为1)加上真值绝对值的二进制表示。表示范围为−2n−1+1∼0-2^{n-1}+1\sim 0−2n−1+1∼0,+0∼+2n−1+0\sim +2^{n-1}+0∼+2n−1。例如,以8 bit字长为例(下同),[−74]原=1100 1010[-74]_...原创 2020-02-16 19:15:27 · 1362 阅读 · 0 评论