資源簡介
是一個課程作業,在vs2013下寫的一個完整jpeg編碼程序,包含了完整的壓縮過程從圖像分塊到最后三個通道分別被壓縮為二進制碼,但是不包含解碼過程,用了幾個opencv2.4.9中讀取存儲圖像的函數

代碼片段和文件信息
#include
#include
#include
using?namespace?std;
using?namespace?cv;
#define?height?8
#define?width?8??//定義8*8塊的高和寬?
#define?Q?7?//定義控制量化步長的Q值
//定義亮度區域和色度區域的量化矩陣
int?QY[8][8]?=?{?{?16?11?10?16?24?40?51?61?}
{?12?12?14?19?26?58?60?55?}
{?14?13?16?24?40?57?69?56?}
{?14?17?22?29?51?87?80?62?}
{?18?22?37?56?68?109?103?77?}
{?24?35?55?64?81?104?113?92?}
{?49?64?78?87?103?121?120?101?}
{?72?92?95?98?112?100?103?99?}
};
int?QC[8][8]?=?{?{?17?18?24?47?99?99?99?99?}
{?18?21?26?66?99?99?99?99?}
{?24?26?56?99?99?99?99?99?}
{?47?66?99?99?99?99?99?99?}
{?99?99?99?99?99?99?99?99?}
{?99?99?99?99?99?99?99?99?}
{?99?99?99?99?99?99?99?99?}
{?99?99?99?99?99?99?99?99?}
};
//定義一個進行Zag-Zig掃描的表
int?Zig_8[64]?=?{?0?1?8?16?9?2?3?10
17?24?32?25?18?11?4?5
12?19?26?33?40?48?41?34
27?20?13?6?7?14?21?28
35?42?49?56?57?50?43?36
29?22?15?23?30?37?44?51
58?59?52?45?38?31?39?46
53?60?61?54?47?55?62?63?};
//定義量化函數
void?LH_QY(Mat?&srcImage)
{
for?(int?i?=?0;?i? for?(int?j?=?0;?j? {
srcImage.at(i?j)?=?round(srcImage.at(i?j)?/?(QY[i][j]*Q));
}
}
void?LH_QC(Mat?&srcImage)
{
for?(int?i?=?0;?i? for?(int?j?=?0;?j? {
srcImage.at(i?j)?=?round(srcImage.at(i?j)?/?(QC[i][j]*Q));
}
}
//定義反量化函數
void?ILH_QY(Mat?&srcImage)
{
for?(int?i?=?0;?i? for?(int?j?=?0;?j? {
srcImage.at(i?j)?=?srcImage.at(i?j)?*?QY[i][j];
}
}
void?ILH_QC(Mat?&srcImage)
{
for?(int?i?=?0;?i? for?(int?j?=?0;?j? {
srcImage.at(i?j)?=?srcImage.at(i?j)?*?QC[i][j];
}
}
//定義了一個文件存儲的函數?
void?storage_int(Mat?mat?char*?filename)
{
FILE?*fp?=?fopen(filename?“w“);
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
fprintf(fp?“%d“?mat.at(i?j));
fprintf(fp?“\t“);
}
fprintf(fp?“\n“);
}
fclose(fp);
}
void?storage_float(Mat?mat?char*?filename)
{
FILE?*fp?=?fopen(filename?“w“);
for?(int?i?=?0;?i? {
for?(int?j?=?0;?j? {
fprintf(fp?“%f“?mat.at(i?j));
fprintf(fp?“\t“);
}
fprintf(fp?“\n“);
}
fclose(fp);
}
//存儲行程編碼的非零數之間的0的個數,非零數
struct?Temp_1
{
string?number_zero;
string?value;
};
//存儲0的個數,非零數二進制編碼,編碼長度
struct?Temp_2
{
string?number_zero;//0的個數
string?code_len;//編碼長度
string?code;//編碼
};
//存儲前面(0的個數+編碼長度)合并后的結果,非零數編碼
struct?Temp_3
{
string?he_bin;//前面兩位合并后的結果
string?code;//編碼
};
//存儲編碼后的結果
struct?Temp_4
{
string?code_1;//哈夫曼編碼
string?code_2;//二進制編碼
};
//聲明十進制與二進制對應的表
struct?bitTable
{
string?valu
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-03-10?22:11??JPEG編碼\
?????目錄???????????0??2018-03-10?22:11??JPEG編碼\Debug\
?????文件??????175104??2017-12-27?19:00??JPEG編碼\Debug\JPEG編碼.exe
?????文件?????7274884??2017-12-27?19:00??JPEG編碼\Debug\JPEG編碼.ilk
?????文件?????6106112??2017-12-27?19:00??JPEG編碼\Debug\JPEG編碼.pdb
?????目錄???????????0??2018-03-10?22:11??JPEG編碼\JPEG編碼\
?????文件??????????36??2017-12-27?18:59??JPEG編碼\JPEG編碼.opensdf
?????文件?????????976??2017-12-20?14:12??JPEG編碼\JPEG編碼.sln
?????文件???????15872??2017-12-20?19:46??JPEG編碼\JPEG編碼.v12.suo
?????目錄???????????0??2018-03-10?22:11??JPEG編碼\JPEG編碼\Debug\
?????文件????????3700??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.log
?????文件??????714567??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.obj
?????目錄???????????0??2018-03-10?22:11??JPEG編碼\JPEG編碼\Debug\JPEG編碼.tlog\
?????文件?????????590??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.tlog\cl.command.1.tlog
?????文件???????10146??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.tlog\CL.read.1.tlog
?????文件?????????372??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.tlog\CL.write.1.tlog
?????文件?????????160??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.tlog\JPEG編碼.lastbuildstate
?????文件????????1884??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.tlog\li
?????文件????????4964??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.tlog\li
?????文件?????????346??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\JPEG編碼.tlog\li
?????文件??????592896??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\vc120.idb
?????文件?????1355776??2017-12-27?19:00??JPEG編碼\JPEG編碼\Debug\vc120.pdb
?????目錄???????????0??2018-03-10?22:11??JPEG編碼\JPEG編碼\images\
?????文件????????3126??2017-12-20?11:26??JPEG編碼\JPEG編碼\images\girl_32_32.bmp
?????文件???????21647??2017-12-27?18:59??JPEG編碼\JPEG編碼\JPEG編碼.cpp
?????文件????????4177??2017-12-20?14:15??JPEG編碼\JPEG編碼\JPEG編碼.vcxproj
?????文件?????????951??2017-12-20?14:15??JPEG編碼\JPEG編碼\JPEG編碼.vcxproj.filters
- 上一篇:IBM Websphere MQ
- 下一篇:WCF理論到實踐初級中級適用推薦
評論
共有 條評論