这篇文章将为大家详细讲解有关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的控件上进行左右拖动,图片就会跟着改变效果了
关于“OpenCV中阈值二值化动态变化的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。