2

CentOSマシンでOpenCV2.4.4を使用しています。私のコードは現在、警告付きの画像をロードしています:コンポーネントのデータ型の不一致

コードは次のとおりです。

#include <cv.h>
#include <highgui.h>
#include "imglib.h"

int main( int argc, char** argv )
{
    Mat image = imread( argv[1], CV_LOAD_IMAGE_ANYDEPTH);
    imwrite("debugwriteout.jp2", image);
}

引数に.jp2グレースケールファイルの名前を渡します。画像のピクセル深度は14ビットですが、ピクセル値を印刷すると20000を超える値が得られ、画像は完全に黒い正方形になります。何かアドバイスをいただければ幸いです。

追加情報:未読フラグをCV_LOAD_IMAGE_GRAYSCALEに変更すると、画像が8ビットピクセル深度に正常に変換され、有用な出力が出力されるため、jasperモジュールが少なくともある程度正しく機能していることがわかります。

何かアドバイスをいただければ幸いです、

ありがとう

4

2 に答える 2

1

SZman、

私は自分の問題を解決しました。解決策は、上位ビットの位置です。16ビットでは、14ビットの深さの場合、00xxxxxxxxxxxxxxの代わりにxxxxxxxxxxxxxx00があります。正しい値が必要な場合は、右側の2ビットをデカールする必要があります。

于 2013-04-29T23:58:08.373 に答える
0

それらのフラグを使用して画像をお読みください

Mat image = imread( argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
于 2013-03-15T18:42:47.073 に答える