看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《heymei0421 (heymei)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Dev-C++ : 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) : 無 : 問題(Question): : 目前想把一個raw檔讀入一維陣列 每一個raw檔的pixel有8個位元 所以宣告char陣列 : 來儲存352*288的圖檔 所以宣告101376的字元陣列。 : 自己的寫法如下: : FILE *fptr; : int i= 0; : //unsigned char num[101376]= {0}; unsigned char num[352][288] = {0}; //我的話習慣用迴圈初始化 : fptr = fopen("c:\\HW\\HW2_Porsche918Spyder.yuv","rb"); : //fread(&num,sizeof(unsigned char),101376,fptr); fread(num, 352, 288, fptr);//除第一個參數,你這樣用也是沒錯! //第一個參數:想存pixel的陣列最開始的位址 num = &num[0] //第二個參數:一次存多大 //第三個參數:存幾次 //第四個參數:從哪裡來 : //unsigned char num_int[101376]={0}; //宣告字元陣列來裝轉換int後的值 int int_num[352][288];//建議型別放前面 for(int i = 0; i<352; ++i) for(int j = 0; j<288; ++j) int_num[i][j] = (int)num[i][j]; //其實,到時候要用時,再轉態也來得及! : char *endptr; : for(i=0;i<101376;i++) : num_int[i] = strtol(&num, &endptr, 2); : 問題1:這樣使用fread對嗎? : 問題2:這樣使用strtol對嗎? : 餵入的資料(Input): : 讀入一個幾乎整片綠的法拉利raw圖檔 : 預期的正確結果(Expected Output): : 小弟覺得讀進來的結果 應該值在0~255之間 : 錯誤結果(Wrong Output): : 但出來的值幾乎是22上下誤差不到2.. : 我感覺好像是錯的... : 請大大幫忙>"< : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.33.224.25
heymei0421:感謝您的熱心 08/14 08:49