我试图cvGoodFeatureToTrack
在Visual Studio 2010中使用图像类型为的函数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);
Run Code Online (Sandbox Code Playgroud)
它编译但给我一个内存访问冲突.救命!
作为一个起点,如果使用C++无论如何(如你的使用cv::Mat
和cv::cvtColor
建议),为什么不使用C++接口呢?
这意味着使用cv::goodFeaturesToTrack
或者cv::GoodFeaturesToTrackDetector
,这些都使得上下工夫cv::Mat
,而不是作出不必要的铸件和朋友cv::Mat
来IplImage*
.
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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4397 次 |
最近记录: |