class MorphologyExActivity : AppCompatActivity() {
private lateinit var mBinding: ActivityMorphologyExBinding
private lateinit var mBinary: Mat
private var mFlag = Imgproc.MORPH_OPEN
set(value) {
field = value
doMorphology(value, mSize.toDouble())
}
private var mSize = 3
set(value) {
field = value
doMorphology(mFlag, value.toDouble())
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_morphology_ex)
mBinding.seekbar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
mSize = progress
mBinding.tvSize.text = progress.toString()
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {
}
override fun onStopTrackingTouch(seekBar: SeekBar?) {
}
})
mBinary = Mat()
val bgr = Utils.loadResource(this, R.drawable.number)
val gray = Mat()
Imgproc.cvtColor(bgr, gray, Imgproc.COLOR_BGR2GRAY)
Imgproc.threshold(gray, mBinary, 125.0, 255.0, Imgproc.THRESH_BINARY_INV)
mBinding.ivLena.showMat(mBinary)
bgr.release()
gray.release()
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_morphology_ex, menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
title = item.title
mFlag = when (item.itemId) {
R.id.morphology_close -> {
Imgproc.MORPH_CLOSE
}
R.id.morphology_gradient -> {
Imgproc.MORPH_GRADIENT
}
R.id.morphology_top_hat -> {
Imgproc.MORPH_TOPHAT
}
R.id.morphology_black_hat -> {
Imgproc.MORPH_BLACKHAT
}
R.id.morphology_hit_miss -> {
Imgproc.MORPH_HITMISS
}
else -> Imgproc.MORPH_OPEN
}
return true
}
private fun doMorphology(flag: Int, width: Double) {
val kernel = Imgproc.getStructuringElement(Imgproc.CV_SHAPE_RECT, Size(width, width))
val dst = Mat()
Imgproc.morphologyEx(mBinary, dst, flag, kernel)
mBinding.ivResult.showMat(dst)
dst.release()
}
}
效果
![形态学操作](https://i-blog.csdnimg.cn/blog_migrate/9d2524ee61ebfacf3fe3ea3807fd8f48.gif)
源码
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
最后
文章所有资料全部已经打包整理好,免费分享给有需要的人,另外小编手头上整理了大量Android架构师全套学习资料,Android核心高级技术PDF文档+全套高级学习资料+视频+2021 BAT 大厂面试真题解析,都是免费分享给大家的,全部都已整理在GitHub上,有需要的朋友可以点击前往领取更多。
资料展示:
g-KGZctDcR-1710760733064)]
[外链图片转存中…(img-ZDeiFxS8-1710760733065)]
[外链图片转存中…(img-JJ6uvVKX-1710760733065)]