0

cvGoodFeatureToTrackVisualStudio2010の関数を画像タイプとして使用しようとしていMatます。私が見た例のほとんどは、IplImageポインターを使用しています。今私はこれを持っています:

int w, h; // video frame size

Mat grayFrame;
Mat eigImage;
Mat tempImage;
const int MAX_CORNERS = 10;
CvPoint2D32f corners[MAX_CORNERS] = {0};
int corner_count = MAX_CORNERS;
double quality_level = 0.1;
double min_distance = 10;
int eig_block_size = 3;
int use_harris = false;

w = CurrFrame.size().width;
h = CurrFrame.size().height;
cvtColor(CurrFrame, grayFrame, CV_BGR2GRAY);
cvGoodFeaturesToTrack(&grayFrame,
                      &eigImage,
                      &tempImage,
                      corners,
                      &corner_count,
                      quality_level,
                      min_distance,
                      NULL,
                      eig_block_size,
                      use_harris);

コンパイルされますが、メモリアクセス違反が発生します。ヘルプ!

4

1 に答える 1

8

出発点として、とにかくC ++を使用している場合(の使用cv::Matcv::cvtColor提案など)、残りの部分にもC ++インターフェイスを使用してみませんか?

これは、からへの不必要なキャストを行う代わりに、cv::goodFeaturesToTrackまたはの使用を意味します。cv::GoodFeaturesToTrackDetectorcv::Matcv::MatIplImage*

cv::Mat grayFrame;
std::vector<cv::Point2f> corners;
double quality_level = 0.1;
double min_distance = 10;
int eig_block_size = 3;
int use_harris = false;

const int MAX_CORNERS = 10;
cv::cvtColor(CurrFrame, grayFrame, CV_BGR2GRAY);
cv::goodFeaturesToTrack(grayFrame,
                        corners,
                        MAX_CORNERS,
                        quality_level,
                        min_distance,
                        cv::noArray(), 
                        eig_block_size,
                        use_harris);
于 2012-09-28T08:13:52.947 に答える