当前位置:网站首页>有趣的opencv-记录图片二值化和相似度实现
有趣的opencv-记录图片二值化和相似度实现
2022-08-03 12:42:00 【51CTO】
一、背景:
前面的文章提到,要实现两个功能
- 实现数字识别
- 实现图标识别
前面的文章已经已经实现了数字的识别,但是发现识别率比较低,并且识别的错误率也比较高。考虑是因为背景比较复杂影响了识别效果,本文主要解决复杂背景的简化,以及图片的对比
二、目标:
- 通过opencv对图片处理,使背景和内容有更加明显的差异,即二值化
- 通过opencv对比二值化后的图片的相似度,来识别图标
三、实现过程:
opencv的集成
1. 下载opencv对应的版本 https://opencv.org/releases/
我使用了最新的4.6.0 的版本

2. 解压下载的zip得到demo和需要集成的module

3. 接入自己的项目
3.1、将2中得到的sdk作为一个独立module放到项目中

3.2、在项目的setting.gradle中引入sdk module

3.3、 在使用opencv的module中引入sdk module

4. 编译使用
至此集成算是完成了,但是因为这个使用了ndk相关的功能,如果本地没有ndk环境的话,可能需要处理下环境问题,这里不再赘述
二值化处理
1. 先上代码
2. 步骤拆解
2.1、先将bitmap转为 Mat方便opencv进行操作
2.2、 调用 Imgproc.cvtColor(src, thresholdImage, Imgproc.COLOR_RGBA2GRAY); 将图像转为灰度图像
2.3、 调用 ` Imgproc.threshold(thresholdImage,thresholdImage,10.0,255.0, Imgproc.THRESH_BINARY_INV|Imgproc.THRESH_OTSU);
` 将图像转为二值图像。 这个方法非常的重要,在这里专门说一下
1. 第一个参数是图像来源
2. 第二个参数是输出的图像
3. 是一个标准。每个像素点会和这个标准比较。这个会和最后一个参数关联在一起使用。
4. 在符合第三个参数的标准的情况下,要赋予的值
5. 第五参数控制第三、第四个参数的使用情况

3. 效果展示


相似度处理
1. 上代码
2. 步骤拆解
2.1、 找到两个图片的特征点
2.2、 选取合适的匹配模式
2.3、避免 大图中包含小图导致认为小图完全匹配大图的场景,所以对大小进行判断,用大图和小图比。
2.4、 选取一个邻近距离阈值
2.5、 比较两个图的特征值的差异,,将差值符合阈值的个数记录
2.6、 符合阈值的个数,比上总特征数,得到匹配率
总结
opencv提供了一整套非常完善的api,可以解决我们遇到的绝大部分场景,大家可以多看文档,学习起来。
关注公众号: arigeweixin ,取得更多联系

边栏推荐
猜你喜欢

为冲销量下探中低端市场,蔚来新品牌产品定价低至10万?

基于php旅游网站管理系统获取(php毕业设计)

利用ChangeStream实现Amazon DocumentDB表级别容灾复制

In order to counteract the drop in sales and explore the low-end market, Weilai's new brand products are priced as low as 100,000?

Jmeter使用

622. 设计循环队列

IronOS, an open source system for portable soldering irons, supports a variety of portable DC, QC, PD powered soldering irons, and supports all standard functions of smart soldering irons

nacos应用

YOLOv5训练数据提示No labels found、with_suffix使用、yolov5训练时出现WARNING: Ignoring corrupted image and/or label

An动画优化之传统引导层动画
随机推荐
数据库系统原理与应用教程(074)—— MySQL 练习题:操作题 141-150(十八):综合练习
An基本工具介绍之选择线条工具(包教会)
An动画优化之传统引导层动画
无监督学习KMeans学习笔记和实例
pandas连接oracle数据库并拉取表中数据到dataframe中、生成当前时间的时间戳数据、格式化为指定的格式(“%Y-%m-%d-%H-%M-%S“)并添加到csv文件名称中
(通过页面)阿里云云效上传jar
Use %Status value
Blog records life
Jmeter使用
An工具介绍之形状工具及渐变变形工具
如何免费获得一个市全年的气象数据?降雨量气温湿度太阳辐射等等数据
IronOS, an open source system for portable soldering irons, supports a variety of portable DC, QC, PD powered soldering irons, and supports all standard functions of smart soldering irons
可视化图表设计Cookbook
setTimeout 、setInterval、requestAnimationFrame
自律成就自己
类和对象(中上)
PolarFormer: Multi-camera 3D Object Detection with Polar Transformers 论文笔记
Image fusion SDDGAN article learning
实数取整写入文件(C语言文件篇)
An动画基础之按钮动画与基础代码相结合