我们一般直接称scharr为滤波器,而不是算子
计算图像差分:Scharr()函数
void Scharr( InputArray src, // 源图
OutputArray dst, // 目标图
int ddepth,// 图像深度
int dx,// x方向上的差分阶数
int dy,// y方向的差分阶
double scale = 1,// 缩放因子
double delta = 0,// delta值
int borderType = BORDER_DEFAULT// 边界模式
);
函数参数详解
代码示例
NSString *image = @"star.png";
UIImage *image1 = [UIImage imageNamed:image];
Mat im;
UIImageToMat(image1, im);
if (im.empty()) {
return;
}
Mat scharr_grad_x,scharr_grad_y;
Mat abs_scharr_grad_x,abs_scharr_grad_y,scharr_gray;
// 将原图变为灰度图
cvtColor(im, scharr_gray,COLOR_RGBA2GRAY);
// 求x方向的梯度
Scharr(scharr_gray, scharr_grad_x, CV_16S, 1, 0);
convertScaleAbs(scharr_grad_x, abs_scharr_grad_x);
// 求y方向的梯度
Scharr(scharr_gray, scharr_grad_y, CV_16S, 0, 1);
convertScaleAbs(scharr_grad_y, abs_scharr_grad_y);
// 合并梯度(近似的)
addWeighted(abs_scharr_grad_x, 0.5, abs_scharr_grad_y, 0.5, 0, dst);
self.secondImageView.image = MatToUIImage(dst);