opencv4android常用变换(终)

opencv4android常用变换(三)

这是opencv4android的第三篇,从这里开始就简单的写,要不我没有时间去学别的了!大家加油。

Laplace 算子

检测边缘的一种算法,是一个二阶导数就是Sobel的导数,可以这么理解,是边界轮廓更加清晰明显。
方法: Laplacian(grayMat,dstMat,-1,3,1,0,Core.BORDER_DEFAULT);

参数说明:原图像,目标图像,深度,内核大小,后三个为默认值。

代码:

    Mat grayMat=new Mat();
    Utils.bitmapToMat(mBitmap,rgbMat);
    Imgproc.GaussianBlur(rgbMat,grayMat,new Size(3,3),0,0,Core.BORDER_DEFAULT);
    Imgproc.cvtColor(grayMat,grayMat,Imgproc.COLOR_BGR2GRAY);
    Imgproc.Laplacian(grayMat,dstMat,-1,3,1,0,Core.BORDER_DEFAULT);
    Utils.matToBitmap(dstMat,dstBitmap);
    dstImage.setImageBitmap(dstBitmap);

效果:

从效果图上来看,确实要比Sobel的边缘检测效果要好很多,能够很明显的看出帽子上羽毛的轮廓。

Canny 边缘检测

Canny 边缘检测算法 是 John F. Canny 于 1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的 最优算法, 最优边缘检测的三个主要评价标准是:

  • 低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报。
  • 高定位性: 标识出的边缘要与图像中的实际边缘尽可能接近。
  • 最小响应: 图像中的边缘只能标识一次。
    —引自opencv教程。

方法:Imgproc.Canny(grayMat,dstMat,n,3*n,3,true);

参数:灰度图像,目标图像,最低阈值,最高阈值,内核大小,不知道。

代码:

    Mat grayMat=new Mat();
    Utils.bitmapToMat(mBitmap,rgbMat);
    Imgproc.cvtColor(rgbMat,grayMat,Imgproc.COLOR_BGR2GRAY);
    Imgproc.GaussianBlur(grayMat,grayMat,new Size(3,3),0,0,Core.BORDER_DEFAULT);
    Imgproc.Canny(grayMat,dstMat,n,3*n,3,true);
    Utils.matToBitmap(dstMat,dstBitmap);
    dstImage.setImageBitmap(dstBitmap
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值