Haar 変換を bmp 画像のピクセルに適用する C++ コマンド ライン アプリケーションを作成しています。ヘッダー情報を抽出し、ピクセルのバイト配列サイズを特定することに成功しました。char[pixelHeight][rowSizeInBytes] にファイルのピクセル データを入力した後、各ピクセル (使用している bmp の 24 ビット) をベクトルに読み込みます。それは私のマシンで動作していますが、ピクセルを表す char 配列を unsigned int に変換するための実装が安全であるか、慣用的な C++ の方法であるかどうかを知りたいです。リトル エンディアン アーキテクチャを想定しています。
unsigned char pixelData[infoHeader->pixelHeight][rowSize];
fseek(pFile, basicHeader->pixelDataOffset, SEEK_SET);
fread(&pixelData, pixelArraySize, 1, pFile);
for(int row = 0; row < infoHeader->pixelHeight; row++)
{
for(int i = 0; i < rowSize; i = i + 3)
{
unsigned char blue = pixelData[row][i];
unsigned char green = pixelData[row][i + 1];
unsigned char red = pixelData[row][i + 2];
char vals[4];
vals[0] = blue;
vals[1] = green;
vals[2] = red;
vals[3] = '\0';
unsigned int pixelVal = *((unsigned int *)vals);
pixelVec.push_back(pixelVal);
}
}