VS2010中OpenCV出现 Microsoft C++ 异常: 内存位置 0x0041b474 处的 cv::Exception。的问题

程序如下#include"cv.h"#include"highgui.h"usingnamespacecv;intmain(intargc,char*argv[]){Ma... 程序如下
#include "cv.h"
#include "highgui.h"

using namespace cv;

int main(int argc, char* argv[])
{
Mat src = imread("234.jpg");
Mat dst;

//输入图像
//输出图像
//输入图像颜色通道数
//x方向阶数
//y方向阶数
Sobel(src,dst,src.depth(),1,1);
imwrite("sobel.jpg",dst);

//输入图像
//输出图像
//输入图像颜色通道数
Laplacian(src,dst,src.depth());
imwrite("laplacian.jpg",dst);

//输入图像
//输出图像
//彩色转灰度
cvtColor(src,src,CV_BGR2GRAY); //canny只处理灰度图

//输入图像
//输出图像
//低阈值
//高阈值,opencv建议是低阈值的3倍
//内部sobel滤波器大小
Canny(src,dst,50,150,3);
imwrite("canny.jpg",dst);

imshow("dst",dst);
waitKey();

return 0;
}
展开
 我来答
ltmit
2015-04-03 · 超过32用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:49.7万
展开全部
出错的原因应该是dst没正确初始化。相关的内容你应该看一下Sobel的函数使用说明文档。
如果我记得没错的话,Sobel要求第二个参数的矩阵应该是大小和src图像一致,然后元素类型是16S,通道数和src一致(c风格代码:dst = cvCreateImage(cvGetSize(src),IPL_DEPTH_16S,3) ;)
如果还出现类似问题,建议lz做如下操作:
使用try...catch块将你的核心代码包裹起来,捕获exception。
方式为:
int main(...)
{
try{
//你的所有代码
}catch(cv::Exception& e) {
printf("exception: %s\n",e.what());
}
}
这样如果再出现exception的话,代码能够捕获异常,并打印异常的具体内容。有助于你定位问题所在。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式