我在 Qt 中使用 ThermoVision SDK 与 FLIR A320 红外相机进行通信。ThermoVision SDK 基于 ActiveX。我无法使用 GetImage 方法从相机中检索图像,根据手册可以通过以下方式使用该方法:
Image = Object.GetImage(imageType)
图像是 VARIANT 类型,包含带有图像像素的二维数组或错误代码(短)。imageType 确定像素的类型(16 位无符号整数、单精度浮点数或 8 位无符号整数)。
我在 Qt 中工作,所以我通过 dumpcpp.exe 为 ActiveX 组件创建了一个包装器。不幸的是,GetImage 方法现在返回 QVariant 而不是 VARIANT:
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 中的像素,例如通过将其转换为二维浮点数组?我尝试使用 QVariant::toFloat()、QVariant::toByteArray()、QVariant::toList() 等方法,但它们似乎都没有返回图像数据。
任何帮助将不胜感激。