2011-08-06 83 views
1

OpenCVのCvMatをMatから使用するコードを変換しようとしていますが、ポインタに問題があります。OpenCV CvMatをMatとポインタに変換する

これは元のコードである:ここでは

CvMat *m_projectedTrainFaceMat; 
float d_i; 
i = 0; 
d_i = projectTestFace[i] - m_projectedTrainFaceMat->data.fl[iTrain * m_nEigens + i]; 

は私の更新されたコードです:あなたが見ることができるように

Mat *m_projectedTrainFaceMat; 
float d_i; 
i = 0; 
d_i = projectTestFace[i] - m_projectedTrainFaceMat->data[iTrain * m_nEigens + i]; 

、私はデータへの呼び出しからの.Flを削除しますが、私がすることはできませんデータを浮動小数点として返す方法を理解しています。

提案がありますか?私はそれを浮かべるようにキャストしようとしましたが(浮動*)、彼らはエラー/ミスを引き起こしました。

e:projectTestFaceはfloat *です。

答えて

1

上記のAndreyのコードは、あなたのというメモリが連続していると仮定すると正しいです。そうでない場合もあります。次のようにおそらく(ポインタを使用することなく)もっと簡単な方法は、次のようになります。

アンドレイと同様に
d_i = projectTestFace[i] - (*m_projectedTrainFaceMat).at<float>(row, col); 

私はあなたのm_projectedTrainFaceMatがCV_32FC1要素を有するようintializedされていることを想定しています。

関連する問題