opencv“向量迭代器不兼容”

Posted

技术标签:

【中文标题】opencv“向量迭代器不兼容”【英文标题】:opencv "vector iterators incompatible" 【发布时间】:2011-06-24 09:10:15 【问题描述】:

我正在使用 opencv 2.2 和 VC++(2008) 跟踪对象,同时在程序中使用 goodFeaturesToTrack 'vector iterators incompatible' 出现错误

vector<Point2f> points;
goodFeaturesToTrack(mat,points,10, 0.01, 10, Mat(), 3, 0, 0.04);

有没有办法解决这个问题?

【问题讨论】:

【参考方案1】:

请尝试以下方法。

std::vector<cv::Point2f> points;
cv::Mat pointmat(points);
cv::Mat tempmat = Mat(mat.rows,mat.cols, cv::CV_32FC1);
goodFeaturesToTrack(mat,pointmat, tempmat,10, 0.01, 10, Mat(), 3, 0, 0.04);

goodFeaturesToTrack 根据documentation 采用额外的 tempimage 参数。它的前 3 个参数是 CvArr 类型,std::vector&lt;cv::Point2f&gt; 不是,因此 std::vector 迭代器错误消息的差异。

【讨论】:

以上是关于opencv“向量迭代器不兼容”的主要内容,如果未能解决你的问题,请参考以下文章

循环上的向量迭代器不兼容

在自包含向量循环中删除时“向量迭代器不兼容”

C++ for-each 语句触发“向量迭代器不兼容”断言失败:this->_Getcont() == 0

向量的C++参考

OpenCV 3.0 线迭代器

OpenCV实战——像素操作