アプリケーションでは、各ピクセルが符号なしであるか、各値が指定されたグレーレベルのピクセルであるフロートである画像を処理します。画像のデータに自由にアクセスできるように、ソースを利用できます。
qtフレームワークを使用してこれらの画像を表示/保存およびロードする必要があります。現在、変換を処理する唯一の方法は、少し遅いことが証明されている各ピクセルを取得して設定することです。
これらの画像を変換する他の方法はありますか?
アプリケーションでは、各ピクセルが符号なしであるか、各値が指定されたグレーレベルのピクセルであるフロートである画像を処理します。画像のデータに自由にアクセスできるように、ソースを利用できます。
qtフレームワークを使用してこれらの画像を表示/保存およびロードする必要があります。現在、変換を処理する唯一の方法は、少し遅いことが証明されている各ピクセルを取得して設定することです。
これらの画像を変換する他の方法はありますか?
QImage
既存のバッファ/イメージへのポインタを取得するコンストラクタがあります。
QImage ( uchar * data, int width, int height, Format format )
バッファの所有権を取得したり、内容をコピーしたりすることはないため、バッファがの存続期間を通じて有効であることに責任がありますQImage
。
注: QImage
32ビットで整列された画像行が必要なため、適切なパディングを使用して画像を行方向に新しいバッファーにコピーする必要がある場合があります。符号なしまたは浮動小数点のピクセルしかないため、適用されません(すでに32ビット値)が、将来異なるピクセルタイプがある場合は、覚えておいてください。
QImage :: setPixelを使用する代わりに、画像バッファに直接アクセスする必要があります。
目的の形式、幅、高さで画像を作成したら、QImage :: bits()を使用してメモリバッファにアクセスしたり、QImage :: scanLine()を使用して画像の各行の先頭へのポインタを取得したりできます。ピクセルをメモリに直接設定します。これは、各ピクセルに対してsetPixel()を呼び出すよりもはるかに高速です。