推 heymei0421:感謝您的熱心 08/14 08:49
※ 引述《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