我正在Qt中使用ThermoVision SDK與FLIR A320紅外熱像儀進行通信。 ThermoVision SDK是基於ActiveX的。我無法從照相機與所述的getImage方法,該方法按手冊可以以下面的方式被使用檢索圖像:如何從QVariant中提取單精度浮點數的二維數組?
Image = Object.GetImage(imageType)
圖片類型VARIANT的幷包含與圖像的2維數組的像素或錯誤代碼(短)。 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()之類的方法,但它們都沒有返回圖像數據。
任何幫助將不勝感激。
嗨,你有沒有tryed做一個簡單的qDebug()<< vaIm,只是爲了檢查的QVariant是如何組織的?我的意思是:一個QVariant可以「包含」各種類型的cointainer,所以我會先「推測」它。 – Albert 2014-09-26 10:11:50