先看源代码图片

image.png

在242行通过宽度,高度,宽高比筛选出可能的候选区,并保存在rects中,在需要的地方,按照rects中保存的矩形框裁剪下来。如果选中了学习模式的Checkbox就把这些候选区座位图片保存到SD卡上,这些图片就需要人工分类后,分别放到19个文件夹中,就是最终的样本。样本越多,样本越准确,识别的结果也越准确,但是跟多的样本也会导致速度的更慢。

在273行开始,就是真正的进入识别过程了

image.png

识别过程有如下步骤

1.初始化机器学习引擎(在App启动的时候做了这件事)

这个初始化,首先是把样本图片按照设定好的参数转换成向量特征,识别过程中并不是对比的图片而是对比的特征,这一点需要牢记,如果是对比图片那就是另一种算法了。所以其实我们整理好识别的图片后保存它们的特征就好了,特征比图片占用的存储空间小很多。在机器学习的生产环境是不会把样本转换成特征的过程放到最终的程序中的,最终的程序只负责把特征加载到机器学习引擎中用于计算。我这里之所以每次都要从图片转换为特征,就是为了我方便添加样本文件到文件夹中,添加好了重启一下App就行了,再走一下初始化过程,而不需要单独处理特征文件(实际上整个过程都没有涉及到特征文件)。

2.把所有的候选区每张图都转换成特征值,轮流放到机器学习引擎中得到一个最佳的匹配

只有KNN才这么干,其他的学习算法大多数都不会这么做

3.整理结果

对于本例,需要把结果集进行整理,比如排列顺序,计算花色,确定扑克牌上的10 的位置

在297行中保存了所有的识别结果,接下来就需要整理了,整理算法如下

第一步:按照裁剪的起始位置进行排序(花色和数字分成两组),把所有的结果都进行排序,得到正确的顺序

第二步:处理扑克牌为10的结果,因为10是1和0分开的,在识别的时候是2个结果,如果排序后发现,1之后是0,就合并成一个结果为10

第三步:本例中只考虑了18中情况,也没有考虑大小王的情况,分组成2组后分别是(A,2,3,4,5,6,7,8,9,10,J,Q,K),花色组是(红桃,黑桃,方块,梅花).

第四步:判定识别结果是否成功

识别成功的条件就是识别出所有的花色和字符组合,本例中识别的是13张牌,所以必须要识别出13张牌,才算成功,由于识别光线,角度等原因,不可能每次都能识别成功,所以要用红色框引导用户对齐识别区域。这样一来能帮助对齐识别区域,二来减少计算的图片大小,提升速度。

所以:对于本例的结果是得到字符分组和花色分组都是13个元素才算成功,因为是按照起始位置排序的,当13个字符和13个花色都确定的情况下,那么两组数据都是一一对应的正确结果了。

Android用opencv识别红绿灯,Opencv 图像识别Android实战(识别扑克牌 8.处理筛选区)相关推荐

  1. python识别麻将牌_图像识别之麻将识别源码( 三 )

    图像识别之麻将识别源码( 三 ) 未经过允许不得转载,转载请联系我,如何联系,点我头像. 连载已经完结, 百度网盘测试APP下载地址: 提取码:pkbl 先见效果图,另外我已经上传到了抖音视频,想看N ...

  2. Android上OpenCV物体检测,Opencv图像识别Android实战(识别纸牌4.图像识别素养)

    我认为大多数阅读本文的人都对机器学习有所了解. 我认为没有必要在学术上解释这种含义. 人类学习的目的不是识别更多的东西,机器学习也是如此,也就是说,让计算机通过学习类比来学习更多的东西. 在这里,我们 ...

  3. android opencv 获取小图在大图的坐标_Android开发—基于OpenCV实现相机实时图像识别跟踪...

    利用OpenCV实现实时图像识别和图像跟踪 图像识别 什么是图像识别 图像识别,是指利用计算机对图像进行处理.分析和理解,以识别各种不同模式的目标和对像的技术.根据观测到的图像,对其中的物体分辨其类别 ...

  4. [Android编程心得] Camera(OpenCV)自动对焦和触摸对焦的实现

    http://blog.csdn.net/candycat1992/article/details/21617741 实现 以OpenCV的JavaCameraView为例,首先需要定制自己的Came ...

  5. Android 使用OpenCV的三种方式(Android Studio)

    from: http://blog.csdn.net/sbsujjbcy/article/details/49520791 其实最早接触OpenCV是很久很久之前的事了,大概在2013年的5,6月份, ...

  6. Android NDK开发——Android studio使用JNI调用OpenCV处理图像

    前言 这里要演示的是使用Android studio 做APP开发,使用JNI与C++交互的demo. 一.创建工程 1.创建一个Native C++工程. 2.命令工程和指定交互语言. 3.指定C+ ...

  7. android安装python opencv_Python、C++、Android OpenCV 开发环境的配置

    在 Mac 上折腾了一下 OpenCV 的配置,分别配置了 Python .C++ 和 Android 上的开发环境,中间还遇到点坑,简要记录一下. OpenCV 的安装 OpenCV 的安装有两种方 ...

  8. Android图像识别扫名片识别技术SDK

    Android图像识别扫名片识别技术SDK 一.Android图像识别扫名片识别技术应用背景 这些年,随着移动互联的发展,APP应用成爆发式的增长,在很多APP中都涉及到对名片信息的录入,如移动CRM ...

  9. 计算机视觉实战--OpenCV进行红绿灯识别

    前言: Hello大家好,我是Dream. OpenCV是一个开源的计算机视觉库,可以用于实现各种图像和视频处理任务,包括红绿灯识别.可以帮助自动驾驶汽车.智能交通系统等设备准确地识别红绿灯的状态,以 ...

最新文章

  1. 微秒时间_Ublox 1PPS时间脉冲精度配置问题
  2. 安装Docker和下载images镜像和常用Docker命令
  3. Angular2 富文本编辑器 ng2-ckeditor 的使用
  4. android 自定义正方形 绕中心点旋转
  5. matlab生产计划问题,用MATLAB解决综合生产计划编制过程中的优化问题
  6. SAP GUI security setting on local file access
  7. ASP.NET2.0导出Word文档(C#导出DOC)
  8. CSS选择器与Xpath常用语法及对比
  9. 面试指南:新人面试做好三个“第一”
  10. 参数展示初始三层架构
  11. 从DCF到DCX:构想照进现实
  12. Xcode6 部署iphone4s出现的问题 No architectures to compile for
  13. 漏刻有时数据可视化Echarts组件开发(21):基于echarts开发的自动旋转map3D下钻和柱图地图
  14. error C251: illegal octal digit 错误提示
  15. python怎么用大数据分析师_如何七周成为数据分析师18:Python的新手教程
  16. 怎么用python画螺旋_用Python tu绘制螺旋
  17. python基础-15-列表推导式
  18. 白话空间统计十九:热点分析(上)
  19. 订单部分商品退款模型思考
  20. 数据结构之回文专题(Palindrome)

热门文章

  1. shader forge效果篇|模型外发光-菲尼尔效果
  2. Python open 函数
  3. 设计妻子孝敬服务器销售,尺度化和模块化对低落数据中心本钱的孝敬
  4. 实战c++中的vector系列--vectorunique_ptr初始化(所有权转移)
  5. 智慧水务:数字孪生技术的应用
  6. 四川天创速盈:在拼多多开店之前,需要对用户群体进行分析
  7. Facebook提出DensePose数据集和网络架构:可实现实时的人体姿态估计
  8. 如何自行编译HPL-GPU 来测试Benchmark
  9. 计算机科学与技术答辩ppt,计算机科学与技术专业论文答辩PPT范例.ppt
  10. 跑步用什么蓝牙耳机好?2022跑步运动蓝牙耳机推荐