我想在C ++环境中使用OpenCV编写一个程序来检测图像中的轮廓。
I am trying to write a program to detect contours within an image using OpenCV in the C++ environment.
它的问题是我没有得到编译错误,而是一个运行时错误。我不知道为什么;我按照书和OpenCV文档源来构建下面的代码,它应该工作正常,但它不...什么可能是错误的想法...?
The problem with it is that I don't get a compile error, but instead a runtime error. I have no idea why; I followed the book and OpenCV documentation sources to build 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; }推荐答案
MSVC IDE。无论如何,你的代码有很多问题,我已经涵盖了大部分在Stackoverflow。他们去:
I bet that you are using the MSVC IDE. Anyway, your code has a lot of problems and I've covered most of them on Stackoverflow. Here they go:
- 转义斜杠
- 安全地检查代码并检查调用返回
- Visual Studio在运行时加载文件
- Escape the slashes
- Code safely and check the return of the calls
- How Visual Studio loads files at runtime
我怀疑你的问题是 imread()失败,因为它没有找到该文件。上述连结可协助您解决这个问题。
I suspect that your problem is that imread() is failing because it didn't found the file. The links above will help you fix that.
更多推荐
图像轮廓检测错误:OpenCV,C ++
发布评论