0

我正在尝试从图像中提取和绘制轮廓。我选择的代码主要取自 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;
}

`

4

1 回答 1

0

要运行示例代码,您需要正确配置 VS 项目。

你可以这样做:http ://docs.opencv.org/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html?highlight=visual%20studio%20installation

一些要点:

你必须去项目属性并设置一些东西:

1)使用 staticlibrary 或 dynamic :为此,您需要在“附加库目录”中正确选择适当的目录。

如果您使用 staticlib,则根据您尝试运行项目“调试/发布”的模式,您需要在扩展之前添加带有“d”的 .lib 文件。

2) 根据您制作的 32 位或 64 位项目,您需要将适当的 dll 目录添加到系统路径。

3)您需要将“包含附加目录”添加到“c\opencv\build\include”

希望它会有所帮助

于 2013-11-26T03:12:44.517 回答