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);也不行,也是报错