findContours异常问题(opencv3.1+vs2013)

来源:互联网 发布:查端口被占用 编辑:程序博客网 时间:2024/06/05 06:20

1. VS2013环境配置

1.1 配置opencv3.1环境

      1)配置包含目录和库目录

       

      2)配置opencv依赖库

      

1.2 opencv3.1运行模式配置

     配置运行库:

     1)外部连接依赖为:opencv_world310.lib:(Release模式)

          则运行库配置为/MT或/MD才能正常工作

     2)  外部连接依赖为:opencv_world310d.lib:(Debug模式)

          则运行库配置为/MTd或/MDd才能正常工作

     

     MT:MultiThread(static link)     ibcmt.lib
     MD:MultiThread(dynamic link)    msvert.lib

2. 示例代码

#include <opencv2/opencv.hpp>#include <iostream>struct Component{    cv::Rect boundingBox;    double area;    double circularity;};int main(){    // Create a small image with a circle in it.    cv::Mat image(256, 256, CV_8UC3, cv::Scalar(0, 0, 0));    cv::circle(image, cv::Point(80, 110), 42, cv::Scalar(255,127, 63), -1);    // Find canny edges.    cv::Mat cannyEdges;    cv::Canny(image, cannyEdges, 80, 60);    // Show the images.    cv::imshow("img", image);    cv::imshow("cannyEdges", cannyEdges);    // Find the contours in the canny image.    cv::vector<cv::Vec4i> hierarchy;    // "Each contour is stored as a vector of points."    // http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#findcontours    typedef cv::vector<cv::vector<cv::Point> > TContours;    TContours contours;    cv::findContours(cannyEdges, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE);    // cannyEdges is destroyed after calling cv::findContours    // Print number of found contours.    std::cout << "Found " << contours.size() << " contours." << std::endl;    // Convert contours to Components.    typedef cv::vector<Component> TComponents;    TComponents components;    for (TContours::const_iterator it( contours.begin() ); it != contours.end(); ++it)    {        Component c;        c.area = cv::contourArea(*it);        c.boundingBox = cv::boundingRect(*it);        c.circularity = 0.0; // Insert whatever you mean by circularity;        components.push_back(c);    }    for (TComponents::const_iterator it( components.begin() ); it != components.end(); ++it)        std::cout << it->area << std::endl; // and whatever you want.    // Wait for user input.    cv::waitKey();}

3. 出错原因

    1) VS版本与OpenCV VS版本不匹配

    2) Opencv与Debug与Release与VS工程的配置不一致


0 0
原创粉丝点击