1

デコーダーMiniJpegDecoderを使用してC++でJPEG画像を操作したい。

問題は次のとおりです。ピクセルごとに読み取りたいのですが、libjpegと同様に、デコーダーはimageData-arrayのみを返します。

私はこのような方法を作ることができません:

char getPixel(char x, char y, unsigned char* imageData) 
{
    //...???
}

戻り値(char変数)には、ピクセルの輝度が含まれている必要があります。

(私はグレースケール画像を使用しています...)

どうすればこの問題を解決できますか?

4

1 に答える 1

0

私の知る限り、このDecoderクラスはメソッドを使用してカラー値のバイト配列を提供しますGetImage()。したがって、次のような関数を作成できます。

char getLuminance(Decoder* dec, int x, int y) {
    if(x < 0 || y < 0 || x >= dec->GetWidth() || y >= dec->GetHeight()) {
        throw "out of bounds";
    }

    return dec->GetImage()[x + y * dec->GetWidth()];
}

ピクセルレイアウトがわからないので、配列へのアクセスが正しくない可能性があります。また、これはグレースケール画像に対してのみ機能します。そうでない場合は、その位置でのみ赤の色の値の輝度が得られます。HTH

于 2011-06-04T20:03:19.643 に答える