Image オブジェクト (Point Grej FlyCapture2 SDK でキャプチャ) を QImage オブジェクトに渡す際に問題が発生しました。関数ごとに画像データに関連付けられたポインターを取得しています。
virtual unsigned char* FlyCapture2::GetData ( )
次に、次の方法でデータをロードします。
QImage::QImage ( uchar * data, int width, int height, int bytesPerLine, Format format )
両方の Image オブジェクトのデータの形式は 8 ビットのモノカラーです。BytesPerLine パラメーターは、イメージの幅と等しくなければなりません (FlyCapture2::Image を .bmp に保存してから QImage にロードすることで、既に確認済みです)。
unsigned char* から uchar* へのキャストに問題があると思いますか? 他にアイデアはありますか?画像をピクセルごとにコピーするのは遅すぎます。
編集: FlyCapture によってキャプチャされた画像を関数FlyCapture2::PIXEL_FORMAT_RGB8
内の R = G = B = 8 ビットに変換していPGR::SnapShot()
ます。SnapShot() はunsigned char
* const を返します。ここに私のQt表示機能の一部があります:
unsigned char *const img = PGRSystem->SnapShot();
QImage Img(img, 1024, 768, QImage::Format_RGB888);
QGraphicsScene *Scene = new QGraphicsScene();
Scene->addPixmap(QPixmap::fromImage(Img));
ui.ImageView->setScene(Scene);
ui.ImageView->fitInView(ui.ImageView->itemAt(100,100));
delete [] Scene;
また、Imgをファイルに保存しようとしましたが、未処理の例外が発生しました。他のピクセル形式のペアを試しました ( FlyCapture2::PIXEL_FORMAT_RGB
- 24 ビット RGB with QImage::RGB88
8 およびFlyCapture2::PIXEL_FORMAT_RGBU32
with QImage::RGB32
)
また、私が使用している QImage コンストラクターが colorTable を設定しないことにも言及する価値があります (QImage が grayScale であるかどうかを確認するときに例外が発生します)。もう少し助けが必要だと思います。