I am trying to write a program for detecting contours inside an image using OpenCV in a C ++ environment.
The problem is that I am not getting a compilation error, but instead a runtime error. I have no idea why; I followed the book and sources of OpenCV documentation to generate the code below, and it should work fine, but it doesnโt ... any ideas on what might be wrong ...?
#include "iostream" #include<opencv\cv.h> #include<opencv\highgui.h> #include<opencv\ml.h> #include<opencv\cxcore.h> #include <iostream> #include <string> #include <opencv2/core/core.hpp> // Basic OpenCV structures (cv::Mat) #include <opencv2/highgui/highgui.hpp> // Video write using namespace cv; using namespace std; Mat image; Mat image_gray; Mat image_gray2; Mat threshold_output; int thresh=100, max_thresh=255; int main(int argc, char** argv) { //Load Image image =imread("C:/Users/Tomazi/Pictures/Opencv/ayo.bmp"); //Convert Image to gray & blur it cvtColor( image, image_gray, CV_BGR2GRAY ); blur( image_gray, image_gray2, Size(3,3) ); //Threshold Gray&Blur Image threshold(image_gray2, threshold_output, thresh, max_thresh, THRESH_BINARY); //2D Container vector<vector<Point>> contours; //Fnd Countours Points, (Imput Image, Storage, Mode1, Mode2, Offset??) findContours(threshold_output, contours, // a vector of contours CV_RETR_EXTERNAL, // retrieve the external contours CV_CHAIN_APPROX_NONE, Point(0, 0)); // all pixels of each contours // Draw black contours on a white image Mat result(threshold_output.size(),CV_8U,Scalar(255)); drawContours(result,contours, -1, // draw all contours Scalar(0), // in black 2); // with a thickness of 2 //Create Window char* DisplayWindow = "Source"; namedWindow(DisplayWindow, CV_WINDOW_AUTOSIZE); imshow(DisplayWindow, contours); waitKey(0); return 1; }
source share