C言語で受け取った画像データを、切り分けるプログラムを作成中です。
自分の考え方が間違っているのか・・・出力が意図したとおりに出来ません。
やりたいことは、4000 x 200 の画像データを、20分割したいと思っています。
ポインタで受け取って、並び替えをしやすいように配列に入れ、、、もう一度バッファに入れなおし、出力という流れのつもりです。
0 ・・・・・・・・・・・4000
|
|
|---------------------------------------------------------------------
200
↓ ↓ ↓
0 199 200
| | |
| 1 | | 2 ・・・・・・・・・・・20
200 |
コードは下記になります。
//cast unsigned char* buff = static_cast<unsigned char*>(m_wndTmpBuffer); //buff 受け取った画像 unsigned char tmp[MAX_NUM][HEIGHT][ WIDTH * 2] = {""};//width is 1pixl (2bity) 16bit グレースケール. for(int num= 0; num< MAX_NUM; num++) // ccd count. { for(int h = 0; h < HEIGHT; h++) // height. { for(int w = 0; w < (WIDTH * 2); w++) // width. { tmp[num][h][w] = *buff; buff++; } } } for( int num= 0; num< MAX_NUM; num++) { char bfSize[WIDTH * 2 * HEIGHT]; //one size. unsigned char* outBuffer = (unsigned char*)bfSize; for( int h = 0; h < HEIGHT; h++) { for( int w = 0; w < (WIDTH * 2); w++) { *outBuffer = tmp[num][h][w]; outBuffer++; } } //Make FileName. CString fileName; fileName.Format(_T("C:\\Users\\xxxxx\\Desktop\\Test_Image\\TestImage\\%d.bin"), num); FILE *fp = _tfopen( fileName, _T("wb")); if(fp != NULL) { fwrite( outBuffer, sizeof(outBuffer), 1, fp); fclose(fp); } }
================================
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/28 07:44