作業3:讀入乙個24bitrgb檔案(以down.rgb為例,其解析度為256*256),輸出該資料檔案中r、g、b三個分量(各8bit表示)的概率分布示意圖(類似下圖)和熵。
#include
#include
const int n = 65536;
using namespace std;
#pragma warning(disable : 4996)
//定義三個一維陣列256*256=65536
unsigned char r[n];
unsigned char g[n];
unsigned char b[n];
//定義寬和高
int width = 256;
int height = 256;
//定義頻率陣列並且初始化
double freq_r[256] = ;
double freq_g[256] = ;
double freq_b[256] = ;
//定義熵陣列並且初始化
double entropy_r[256] = ;
double entropy_g[256] = ;
double entropy_b[256] = ;
int main(void)
unsigned char buffer[196608];
/fread函式的用法:fread(buffer, size,count,stream )
buffer 是讀取的資料存放的記憶體的指標(可以是陣列,也可以是新開闢的空間,buffer就是乙個索引)
size 是每次讀取的位元組數
count 是讀取次數
strean 是要讀取的檔案的指標/
fp.read((char*)buffer, 196608);
//將所讀出的rgb數值存入三個陣列中
for (int i = 0, j = 0; i < width * height * 3; i = i + 3, j++)
//三個迴圈分別計算頻率
for (int i = 0; i < 256; i++)}}
for (int i = 0; i < 256; i++)//0~255}}
for (int i = 0; i < 256; i++)//0~255}}
//計算rgb的頻率和熵
for (int i = 0; i < 256; i++)
//開啟三個txt檔案
ofstream fp1(「d:\資料壓縮原理作業\r_sat.txt」, ios::binary);
ofstream fp2(「d:\資料壓縮原理作業\g_sat.txt」, ios::binary);
ofstream fp3(「d:\資料壓縮原理作業\b_sat.txt」, ios::binary);
//symbol 空格 freq
fp1 << 「symbol\tfreq\n」;
for (int i = 0; i < 256; i++)
fp2 << 「symbol\tfreq\n」;
for (int i = 0; i < 256; i++)
fp3 << 「symbol\tfreq\n」;
for (int i = 0; i < 256; i++)
//關閉檔案
一開始檔案開啟方式不對導致無法執行。後在同學幫助下將其改正,以下為錯誤**
但為什麼這樣改正原因不解,望老師解答
由於**基礎不好,所以面對此次任務有畏難的心理,折折騰騰好久,算是完成任務,雖然**不算漂亮。感謝被我麻煩的大佬同學,接下來我一定更認真對待學習,努力提高自己的**能力,我可以把短板補上的!
資料壓縮 任務一
任務 總結計算機程式設計中的各種資料型別,其表示形式和計算方法。重點關注型別轉換,數值溢位和移位等操作。整型 浮點型 字元型由高到低排序 long double double float unsigned long long int long long int unsigned long int l...
資料壓縮作業三2020 03 24
提示 用c或c 實現時 程式的流程為 開闢3個width height的unsigned char型陣列 開啟要讀出的rgb檔案 以 rb 方式開啟 開啟3個要輸出的資料統計檔案 以 w 方式開啟,可命名為r sat.txt等 將rgb資料從rgb檔案中讀出,並分別儲存到3個陣列中,期間計算資料的概...
ASIHTTPRequest 資料壓縮
從0.9版本開始,asihttprequest會提示伺服器它可以接收gzip壓縮過的資料。apache 2.x以上版本已經配備了mod deflate擴充套件,這使得apache可以透明地壓縮特定種類的資料。要開啟這個特性,你需要在apache的配置檔案中啟用mod deflate。並將mod de...