OpenCV与Visual Studio 2013(C ++):findContours断点错误

时间:2015-05-28 18:08:33

标签: c++ visual-studio-2010 opencv visual-studio-2012

我正在使用OpenCV版本2.4.10。

当我调试时,我得到断点错误:wkernelbase.pdb未加载。

此外,我在Visual Studio的输出中出现此错误:

OpenCV Error: Assertion failed <0 <= contourIdx< <int>last> in cv::drawContours, file...\..\..\..\opencv\imgproc\src\contours.cpp, line 1810

在我的应用程序中,命令行打印出来:

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "iostream"

using namespace cv;
using namespace std;
int main()
{
    Mat image;
    image = imread("shape.jpg", 1);
    namedWindow("Display window", CV_WINDOW_AUTOSIZE);
    imshow("Display window", image);
    Mat gray;
    cvtColor(image, gray, CV_BGR2GRAY);
    Canny(gray, gray, 100, 200, 3);

    /// Find contours   
    vector<vector<Point> > contours;
    vector<Vec4i> hierarchy;
    RNG rng(12345);
    findContours(gray, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
    /// Draw contours
    Mat drawing = Mat::zeros(gray.size(), CV_8UC3);
    for (int i = 0; i < contours.size(); i++)
    {
        Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
        drawContours(drawing, contours, i, color, 2, 8, hierarchy, 0, Point());
    }

    imshow("Result window", drawing);
    waitKey(0);
    return 0;
}

有关如何处理此问题的任何建议?这是我的代码:

for (int i=0; i< Array.count; i++) {
  UIImageView *imgProd=[[UIImageView alloc] initWithFrame:CGRectMake(margenX, margenY, 220, 330)];
  imgProd.contentMode = UIViewContentModeScaleAspectFill;
  imgProd.clipsToBounds = YES;
  [imgProd setTag:i];
  // dispatch_async(dispatch_get_main_queue(), ^{
  [imgProd setImageWithURL:[NSURL URLWithString: [Array objectAtIndex:i]]];
  // });
  imgProd.userInteractionEnabled = YES;
  UITapGestureRecognizer *tap ... etc etc.
}

我知道我的图片也在正确的目录中。

2 个答案:

答案 0 :(得分:2)

这是vs2013和opencv

之间的已知兼容性问题

尝试替换

vector<vector<Point> > contours;

vector<cv::Mat> coutours;

这适用于我的情况。

答案 1 :(得分:0)

我尝试了你的代码。

这个例子(可能)没有意义,但你的代码可以工作。

关于VC10,VC12 ......的全部内容可能非常混乱。我的建议是尝试遵循OpenCV HOWTO for Windows and Visual Studio。也许这样你就可以解决你在问题中描述的问题(甚至可以找出问题所在)。