我正在尝试从图像中提取和绘制轮廓。我选择的代码主要取自 opencv 示例代码,但是当我运行此代码时,我收到异常错误消息“test1.exe 中 0x000007FEFDCA9E5D 的第一次机会异常:Microsoft C++ 异常:cv::Exception at内存位置 0x000000000028EB40。如果有这个异常的处理程序,程序可以安全地继续。
,我一直在寻找解决方案,但我发现了类似的问题。以下代码是否有任何解决方案,因为如果有人尝试绘制轮廓,这是最常见的代码。
或者,如果有人为轮廓提取提供最佳或通用解决方案,我会对面临相同错误的其他人感到非常高兴
`
#include "stdafx.h"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
#include "opencv2\imgproc\imgproc.hpp"
using namespace cv;
using namespace std;
int main( int argc, const char** argv )
{
Mat img1 = imread("ima1.JPG", CV_LOAD_IMAGE_UNCHANGED);
Mat canny_img1;
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
RNG rng(12345);
/*Using canny filter for feature extraction in image 1*/
Canny(img1,canny_img1,1,3,3,0);
/* Find contours*/
findContours( canny_img1 , contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
/* Draw contours */
// Mat drawing = Mat::zeros( canny_img1.size(), CV_8UC3 );
/// Draw contours
Mat drawing = Mat::zeros( canny_img1.size(), CV_8UC3 );
for( int i = 0; i< contours.size(); i++ )
{
Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
drawContours( drawing, contours, i, color, 2, 8, hierarchy, 0, Point() );
}
/// Show in a window
namedWindow( "Contours", CV_WINDOW_AUTOSIZE );
imshow( "Contours", drawing );
waitKey(0);
return 0;
}
`