如何处理Visual c++中的SEHException
How to deal with SEHException in Visual c++?
我已经编写了关于inpaint的代码,部分代码如下所示。软件为Visual c++ 2010,库为OpenCV2.4.7。
包括库:
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv/cxcore.h>
#include <opencv/cvaux.h>
#include <opencv2/opencv.hpp>
#include "opencv2/imgproc/imgproc.hpp"
关于inpaint
的部分代码 IplImage *modified = cvLoadImage("D:\save\shutter1.bmp",0);
IplImage *original = cvLoadImage("D:\save\shutter0.bmp",0);
IplImage *imageProcess = cvCreateImage(cvSize(this->width,this->height),IPL_DEPTH_8U,1);
cv::Mat src1 = cv::imread("D:\save\shutter0.bmp");
cvAbsDiff(original,modified,imageProcess);
cvThreshold(imageProcess,imageProcess,1,255,CV_THRESH_BINARY);
IplConvKernel *pKernel = NULL;
pKernel = cvCreateStructuringElementEx(5, 5, 2, 2, CV_SHAPE_RECT, NULL);
cvDilate(imageProcess, imageProcess, pKernel, 3);
cvErode(imageProcess, imageProcess, pKernel, 3);
cvSaveImage("D:\save\Result.bmp",imageProcess);
cv::Mat mask = cv::imread("D:\save\Result.bmp");
cv::Mat dst1;
inpaint(src1, mask, dst1, 1,cv::INPAINT_TELEA);
imshow("image", dst1);
cvShowImage("modified", modified );
cvShowImage("original", original );
cvShowImage("imageProcess", imageProcess );
cvWaitKey(1);
cvReleaseImage(&original);
cvReleaseImage(&modified);
cvReleaseImage(&imageProcess);
这段代码可以通过编译器。然而,当我运行这段代码时,会生成一个窗口,上面写着"System.Runtime.InteropServices.SEHException"。这个代码停在imshow("image", dst1);
行。我认为这个问题可能是由于inpaint()
的作用造成的。我读了很多关于SEHException的文章,但我仍然不知道如何处理这个问题。我也不知道为什么这段代码会产生这个问题?
在搜索更多的网站并使用try and catch找到异常后,我知道这个SEHException的原因是函数inpaint()中的错误参数导致的。我修改了代码,它可以正常运行。修改后的代码如下:
cvSaveImage("D:\save\Result.bmp",imageProcess);
cv::Mat src1 = cv::imread("D:\save\shutter0.bmp");
cv::Mat img,mask;
img = cv::imread("D:\save\Result.bmp",CV_LOAD_IMAGE_GRAYSCALE);
mask=cv::Mat::zeros(this->width, this->height, CV_8UC1);
mask=img;
cv::Mat dst1;
cv::imshow("mask",mask);
inpaint(src1, mask, dst1, 1,cv::INPAINT_NS);
cvWaitKey(1000);
cv::imshow("inpainted", dst1);
相关文章:
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在MS Visual Studio 2019中运行QT UI
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Visual Studio Code - C++ Debugger 無法啟動
- Visual C++ constexpr Hints
- 为什么它不适用于Visual 2019的原因
- Visual Studio 2019:插入多个C++风格的单行注释
- Visual Studio Code "undefined reference to `WinMain@16'"
- visual在c++中将十进制数转换为二进制数
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- Visual Studio中的函数声明和函数定义问题
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- Visual C++(VS2017)中用户定义的转换不明确
- Visual C++GC接口如何启用它以及要包含哪个库
- visual是否可以在c++中创建一个接收无限数量相同类型(或至少相当数量)参数的函数
- visual c++,如何获取解决方案目录中的代码
- Visual Studio mkl_link_tool.exe链接错误
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头