Mat img = imread(filename.toStdString());
imshow("src", img);
Mat grad_x, grad_y;
Mat abs_grad_x, abs_grad_y, dst;
//求x方向梯度
Sobel(img, grad_x, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(grad_x, abs_grad_x);
imshow("x-soble", abs_grad_x);
//求y方向梯度
Sobel(img, grad_y, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT);
convertScaleAbs(grad_y, abs_grad_y);
imshow("y-soble", abs_grad_y);
//合并梯度
//cv::add(abs_grad_x,abs_grad_y,dst);
addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);
imshow("Sobel", dst);
return;
代码如上,参数传递没什么错误啊,运行到addweighted就报段错误,实在是找不到原因。
我后来用了最简单的cv::add(abs_grad_x,abs_grad_y,dst);也不行,也是报错
你这个是将OpenCV的功能写到qt里面吧,先单独测试OpenCV的功能是否正确,如果嵌到qt报错,试试用多线程执行一下
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632