/ / Błąd wykrywania konturu obrazu: OpenCV, C ++ - c ++, opencv

Błąd wykrywania konturów obrazu: OpenCV, C ++ - c ++, opencv

Próbuję napisać program do wykrywania konturów w obrazie przy użyciu OpenCV w środowisku C ++.

Problem polega na tym, że nie dostaję kompilacjibłąd, ale zamiast tego błąd wykonania. Nie mam pojęcia dlaczego; Śledziłem źródła dokumentacji książki i OpenCV, aby zbudować poniższy kod i powinien on działać dobrze, ale nie ... nie ma żadnych pomysłów na to, co może być nie tak ...?

#include "iostream"
#include<opencvcv.h>
#include<opencvhighgui.h>
#include<opencvml.h>
#include<opencvcxcore.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;
}

Odpowiedzi:

0 dla odpowiedzi № 1

Założę się, że używasz MSVC IDE. W każdym razie twój kod ma wiele problemów i większość z nich pokryłem na Stackoverflow. Oto one:

Podejrzewam, że to twój problem imread() zawodzi, ponieważ nie znalazł pliku. Powyższe linki pomogą ci to naprawić.