OpenCV CV findHomography断言错误计数器=> 4

时间:2018-06-20 04:25:03

标签: c++ opencv

我正在使用Feature2D + findHomography来编译和运行代码以找到一个已知的对象教程,并且得到了这个错误计数器=> 4;然后我更改了代码并在所有地方使用了显式的命名空间说明符,但问题并未解决。如果可以的话,请在这个问题上帮助我,或者说哪个函数执行与findHomography相同的任务,并且不要使程序崩溃。 这是我的代码    #include“ opencv2 / opencv.hpp”     使用命名空间cv;

int main()
{
    vector<Point2f> t1;
    vector<Point2f> t2;
    vector<Point2f> t3;
    t3.push_back(Point2f(282, 304));
    t1.push_back ( Point2f(249,456));
    t1.push_back ( Point2f(264, 330));
    t1.push_back ( Point2f(301, 329));
    t1.push_back ( Point2f(308, 327));
    t1.push_back ( Point2f(293, 249));
    t1.push_back ( Point2f(322, 245));
    t1.push_back ( Point2f(321, 225));
    t1.push_back ( Point2f(266, 228));
    t2.push_back ( Point2f(0, 0));
    t2.push_back ( Point2f(15, 994));
    t2.push_back ( Point2f(105, 994));
    t2.push_back ( Point2f(120, 1009));
    t2.push_back ( Point2f(90, 2016));
    t2.push_back ( Point2f(180, 2031));
    t2.push_back ( Point2f(180, 2432));
    t2.push_back ( Point2f(0, 2432)); 
     //-- Get the corners from t1 t2
        vector<Point2f>pt4;
    if (t1.size() >=4 && t2.size()>=4 )
   {  
        Mat h =findHomography(t1, t2, CV_RANSAC, 5);
           //-- this may create a mistake;
    perspectiveTransform(t3, pt4, h);
    for (int m = 0; m < pt4.size(); m++)
    cout << pt4[m]<<endl;
 }

它可以在调试模式下成功运行,但不能在发布模式下运行。怎么了,谢谢。

1 个答案:

答案 0 :(得分:0)

以这种方式配置,可能会出现调试可以运行但不能在发行版下运行的情况(例如没有图片加载,内存错误),这是OpenCV自2.4.1起的错误。如果发生这种情况,请打开当前项目(注意当前项目的属性页面,而不是公共属性页面),调试或发布错误,然后将相应的带或不带D的库添加到“当前”工程属性->> [链接器]-> [其他依赖项]