2

Qt で ThermoVision SDK を使用して FLIR A320 IR カメラと通信しています。ThermoVision SDK は ActiveX ベースです。GetImage メソッドを使用してカメラから画像を取得するのに問題があります。マニュアルによると、次の方法で使用できます。

Image = Object.GetImage(imageType)

画像は VARIANT 型で、画像ピクセルの 2 次元配列またはエラー コード (短い) のいずれかを含みます。imageType は、ピクセルのタイプ (16 ビットの符号なし整数、単精度浮動小数点数、または 8 ビットの符号なし整数) を決定します。

私は Qt で作業しているので、dumpcpp.exe を使用して ActiveX コンポーネントのラッパーを作成しました。残念ながら、GetImage メソッドは VARIANT ではなく QVariant を返すようになりました。

inline QVariant LVCam::GetImage(int imageType)
{
    QVariant qax_result;
    void *_a[] = {(void*)&qax_result, (void*)&imageType};
    qt_metacall(QMetaObject::InvokeMetaMethod, 46, _a);
    return qax_result;
}

GetImage メソッドを次のように呼び出します。

QVariant vaIm = m_ircam->GetImage(20 + 3);

QVariant のピクセルにアクセスするにはどうすればよいですか (たとえば、浮動小数点数の 2 次元配列に変換するなど)。QVariant::toFloat()、QVariant::toByteArray()、QVariant::toList() などのメソッドを使用してみましたが、いずれも画像データを返すようには見えませんでした。

どんな助けでも大歓迎です。

4

1 に答える 1