0

cvGetReal2Dへの呼び出しをに置き換えるにはどうすればよいcvmGetですか?

私は次のような機能を持っています

bool someFunction(CvPoint2D32f location, IplImage &image)
{
  // code
  z = cvGetReal2D(image, location.y, location.x);
  // code
}

cvGetReal2Dより高速であると読んだので、置き換えようとしてcvmGetいますが、私はOpenCVの初心者です(他の人が書いたコードを変更しています)。

CvMat毎回、すべてのポイントに対して全体を作成する必要がありますか? その場合、私が渡しているという事実を変更することはできないのでIplImage...変更するとコードが遅くなりますよね?

CvMat* imageCopy = cvCreateMat(image.width, image.height, image.depth);

(次のような定数も見CV_32FC1たことがありますが、選択方法がわかりません)

では、コピーしますか?

cvCopy(image, imageCopy);    // I hope this would copy the values
I tried - I get an exception...

マルチチャンネルマトリックスで動作しますか? チャネル数を尋ねて、それらを反復する必要がありますか?

4

1 に答える 1

1

以下を使用してIplImageをMatに変換します。

IplImage *img; 
Mat imgMat(img); 

その後、あなたは使用することができますcvmGet

CV_32FC1次のように選択できます:

Mat imageCopy = cvCreateMat(image.width, image.height, image.depth, CV_32FC1);

OpenCV2.4xを使用していることを願っています

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>

cv::Matを使用するにはこれらを含めてください

cvarrtoMatを使用するには:

IplImage A1; 
Mat B1 = cvarrToMat(&A1);
于 2013-02-05T23:31:46.153 に答える