转载请说明出处!
作者:kqw攻城狮
出处:个人站 | CSDN
效果图
源码
边缘是图像中像素亮度变化明显的点。
高斯差分算法步骤
将图像转为灰度图像
12// 原图置灰Imgproc.cvtColor(src, grayMat, Imgproc.COLOR_BGR2GRAY);用两个不同的模糊半径对灰度图像执行高斯模糊(取得两幅高斯模糊图像)
123// 以两个不同的模糊半径对图像做模糊处理Imgproc.GaussianBlur(grayMat, blur1, new Size(15, 15), 5);Imgproc.GaussianBlur(grayMat, blur2, new Size(21, 21), 5);将两幅高斯模糊图像做减法,得到一幅包含边缘点的结果图像
123// 将两幅模糊后的图像相减Mat diff = new Mat();Core.absdiff(blur1, blur2, diff);
该方法只对图像做了高斯模糊,这是计算图像边缘最快的方法之一,但是,该方法的结果也不是很理想,这种方式对某些图像效果很好,但是在某些情况下可能会完全失效。
封装
这里用到了RxJava。主要是因为图片处理是耗时操作,会阻塞线程,为了防止界面卡顿,这里使用RxJava进行了线程切换。
|
|
使用
|
|