OpenCV之阈值二值化动态变化

在OpenCV4Android里面我们用到的比较多的就是二值化,简单的二值化流程就是把图片通过Imgproc.cvtColor改为灰度图,然后再通过Imgproc.threshold进行二值化的处理

Imgproc.threshold

//二值化图像  thresh这里如果指定数就是指定阈值,如果这里设为0,后面参数加上Imgproc.THRESH_OTSU
//多数情况下我们都加上Imgproc.THRESH_OTSU让它自己来算
Imgproc.threshold(src, dst, val, 255, Imgproc.THRESH_BINARY);

其中参数src是Mat源,dst是Mat目标,我们设置的第三个参数val就是我们要输入的阈值,阈值的范围在0-225之间,0就是白色,255就是黑色,然后255那个参数就是最大的阈值数,最后一个参数Imgproc.THRESH_BINARY就是二值化处理,当我们的参数阈值自己手动修改时,就直接填一个这个就可以,如果是默认的阈值是0,建议参数加上Imgproc.THRESH_BINARY | Imgproc.THRESH_OTSU, OTSU这样API会自动给你计算最合理的值来进行处理.

Layout布局

我们首先在布局图里面加上一个seekbar和一个TextView用于调整我们的值,并且显示当前值

都放在一个LinearLayout里,让其水平布局,并且seekbar占长度的比重为8,TextView占的比重为2

布局效果

MainActivity

然后在MainActivity里面加入加载两个控件并且写对应的事件

SeekBar

加载SeekBar控件,并且加下的Change事件,事件就是当值改变时就调用我们的二值化方法进行图片的更新,我们为了有个改变效果,所以ImgDealUtil.thresholdbmpforval方法里面我们写了一个返回Bitbmp的图像,再在原来的图片上进行更新显示.

TexView

加载textView控件

ImgDealUtil.thresholdbmpforval方法

我们在ImgDealUtil类里面重新增加了一个thresholdbmpforval方法

两个参数, int就是当前的阈值,bitbmp就是当前的图片信息.

进入程序后的效果

我们选择二值化阈值

然后在seekbar的控件上进行左右拖动,图片就会跟着改变效果了

下面的视频效果


-END-

长按下方二维码关注

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值