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;
} 展开
#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;
} 展开
1个回答
展开全部
出错的原因应该是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的话,代码能够捕获异常,并打印异常的具体内容。有助于你定位问题所在。
如果我记得没错的话,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的话,代码能够捕获异常,并打印异常的具体内容。有助于你定位问题所在。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询