OpenCV findContour给出了奇怪的结果

时间:2014-04-15 13:11:45

标签: c++ opencv visual-studio-2013

我正在尝试在深度图像上放置一个简单的边界框:

void cropAndResize(const cv::Mat &input, cv::Mat &output) {
    std::vector<std::vector<cv::Point> > contours;
    cv::Rect croppedHand;

    cv::findContours(input, contours,CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE);




    int maxCont = -1;
        if (contours.size() != 0) {
            maxCont = 0;
        }
        for (int i = 0; i < contours.size(); i++) {
            int currSize = contours.at(i).size();
            if (contours.at(maxCont).size() < currSize)
                maxCont = i;
        }



        if (maxCont > -1) {
            croppedHand = cv::boundingRect(contours.at(maxCont));
        }
}

boundingRect在cv :: boundingRect中给出了断言失败(points.checkVector(2)&gt; = 0&amp;&amp;(points.depth()== CV_23F || points.depth()== CV_32S)) ...)。

这很奇怪,因为我很确定这段代码以前有用过。所以我检查了contours的内容,结果令人困惑。一些元素是尺寸= 452126096252493236甚至更大的矢量。检查向量,我主要有点像{x = ???,y = ???}。

findCountours有什么问题吗?我正在使用Visual Studio 2013,Windows 8 Pro,OpenCV 2.4.8。

编辑:输入图像为CV_8UC1。

1 个答案:

答案 0 :(得分:0)

所以对于其他有此问题的人,我通过回到VS2010解决了这个问题。似乎OpenCV无法跟上当前的技术。