轮廓图上的 OpenCV2.4.6 和 VS12 错误

OpenCV2.4.6 and VS12 error on contour drawing

本文关键字:VS12 错误 OpenCV2 轮廓      更新时间:2023-10-16

我正在尝试从图像中提取和绘制轮廓。我选择的代码主要取自opencv示例代码,但是当我运行此代码时,我收到带有消息的异常错误"在 test1.exe 中0x000007FEFDCA9E5D的第一次机会异常:Microsoft C++异常:cv::内存位置 0x000000000028EB40 处的异常。如果存在此异常的处理程序,则可以安全地继续该程序。

,我一直在寻找解决方案,但我发现了类似的问题.以下代码是否有任何解决方案,因为如果有人尝试绘制轮廓,这是最常见的代码。

或者我会对面临相同错误的其他人感到非常高兴,如果有人为轮廓提取提出最佳或通用解决方案

'

 #include "stdafx.h"
 #include "opencv2/highgui/highgui.hpp"
 #include <iostream>
 #include "opencv2imgprocimgproc.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;
}

'

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

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

一些要点:

您必须转到项目属性并设置一些内容:

1)使用静态库或动态:为此,您需要在"附加库目录"中正确选择适当的目录。

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

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

3)您需要添加"包含其他目录到"c\opencv\build\include"

希望会有所帮助