1)配置包含目录和库目录
2)配置opencv依赖库
配置运行库:
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
#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(); }