基于OpenCV的条形码区域检测(一)


1.已有方案

  能够很轻松地在网上找到这一篇文章《使用Python和OpenCV检测图片上的条形码_Adrian Rosebrock》,原文:‘Detecting Barcodes in Images with Python and OpenCV - Adrian Rosebrock’   作者的详细做法也不多说,大体说来就是将图像先使用Sobel将源图像进行边缘检测,然后再将两个方向的分量相减得到梯度图,效果如图

  但是这时候条码区域相对于其他区域并没有明显的特征,所以需要做的就是将该梯度强度图的干扰区域去除,作者进行了一次9×9的均值滤波,也就是均值模糊,然后用255的阈值进行二值化处理,结果如图

  这时图片的条形码区域就有了很明显的区别于其他区域的特征,但是条形码区域中间还有很明显的缝隙,所以下一步要做的就是将这些缝隙填充,当然想到的就是闭运算,原文作者使用的是21×7的核来进行闭运算(这会十分影响效率),闭运算之后的效果是这样的

  可以很明显地看到之前的缝隙已经被填充上了,但是图像中还有很多小的白色杂点,这个可能会影响到区域轮廓的检测,所以作者进行了4次腐蚀然后再进行了4次膨胀操作,腐蚀操作的目的是将白色的小块去除,膨胀的目的就是将条形码的区域面积变回原来的大小

  接下来就是使用findContours()函数找到图像中所有轮廓并将最大的轮廓框选出来


  上面就是网上转载极广的条形码区域检测的方法,虽然说它是有效的,但是用在实际中还是有些问题:

  •   首先当然是效率问题,当然如果使用30W像素的图片当然没有这个问题,上述操作中的均值滤波与闭运算的核都可以相应缩小,但是现在动辄500W像素以上的图片,作者使用的闭运算的核的尺寸一般都是不够的,并不足以将条形码的零散的区域联通起来(所以一个比较明智的策略就是将原来高分辨率的图片压缩到30W像素或者一下来进行处理,得到区域位置之后再将坐标变换回去)
  •   但是这个算法中最严重的缺陷却不是效率问题,而是这个算法的适应能力。因为条码的码制和携带的信息都是不固定的,所以有时会存在两条条带之间的间隙特别大的情况,这时闭运算的操作的核的大小就不一定适应了,一旦闭运算没有将条码完全联通起来,那么带来的后果将是最终得到的最大面积的区域不能完全覆盖条码,造成区域锁定失败
  •   当然还存在的问题就是对背景的干净程度有一定的要求

基于OpenCV的条形码区域检测(一)相关推荐

  1. Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]

    1.图片演示 2.视频演示 [项目分享]Python基于OpenCV的实时疲劳检测[源码&演示视频&部署教程]_哔哩哔哩_bilibili 3.检测方法 1)方法 与用于计算眨眼的传统 ...

  2. 运用特征脸方法的基于Opencv的猫脸检测实现

    本文禁止转载.抄袭,请尊重作者权利. 使用特征脸方法的基于Opencv的猫脸检测实现 摘要 目前,在计算机视觉和模式识别领域,脸识别技术是一个很活跃的课题,人脸识别的方法已经十分丰富,而对于日常生活中 ...

  3. RIKIBOT使用系列-基于Opencv HSV的色块检测

    目录 一. 简介 二.查找色值 1.摄像头的角度调 2.启动检测与查找 三. 验证HSV色值 1.写入色值到文件 2.启动检测 四.交流方式 一. 简介 这里学习一下如何用摄像头检测HSV色值,Ope ...

  4. 基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]

    1.视频演示: [项目分享]Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.算法原理: 该博客提出的移动侦测即是根据视频 ...

  5. Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]

    1.视频演示: [项目分享]Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.明厨亮灶: 餐饮企业的厨房卫生状况一直饱受消 ...

  6. 基于Opencv的车距检测系统(源码&教程)

    1.研究背景 对本车前方车辆的识别及距离检测是计算机视觉技术在智能网联汽车中的一个重要内容.要想在错综繁杂的交通环境中实现无人驾驶,对行车环境中其他车辆信息的获取是十分重要的.因此,对本车前方车辆的识 ...

  7. 基于OpenCV的混凝土裂纹检测

    基于OpenCV的混凝土裂纹检测 前言 这是我发的第一次博客,有什么建议大家可以给我留言,感激不尽! 接下来,我们进入正题. 一.使用函数库 numpy, opencv, heapq, skimage ...

  8. Python基于OpenCV的异常行为检测系统[源码&部署教程]

    1.项目背景 智能视频监控(Intelligent Video Surveillance , IVS)[1.2·3.4是计算机视觉技术5l在安防领域的应用,实现了由"被动监控"到& ...

  9. 基于OpenCV的条形码检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...

最新文章

  1. java实验的技术问题及解决方法,2018-2019-2 20175313 实验一《Java开发环境的熟悉》实验报告...
  2. 深究AngularJS——监听模型$watch
  3. 复习--3--对于第三堂课的总结--将两个页面相互用超链接链接到一起
  4. 未来教育计算机二级为什么分数很低,计算机二级考试失分了却不知道为什么?...
  5. python 基础教程(第二版)
  6. 18岁初中毕业学Java_刚满十八 初中毕业 java自学完了 没学历 该怎么办?
  7. 二叉树题目----4 前序遍历重构二叉树 AND 求二叉树中所有结点的个数
  8. 预处理器sass_Sass — Web的预处理器装饰
  9. 价值6000的信息分类系统源码
  10. Android Frame动画概述及示例
  11. 电磁波考试中可以用计算机吗,计算机考试试题库带答案(8页)-原创力文档
  12. python 保留的类标识符
  13. modulus CRT
  14. 读书笔记18:命令模式
  15. Java数组 排序算法和常见异常
  16. ACM卡常数(各种玄学优化)
  17. IOS应用程序崩溃日志分析
  18. Quotes on Learing(求知若渴)
  19. 51-20210316华为海思Hi3516DV300的linux系统编译2(SPI模式)
  20. JavaScript-WebAPIs学习记录

热门文章

  1. 小程序记账项目源码-采用云开发
  2. cocos2d-x的初步学习七
  3. 清华大学提出APDrawingGAN:人脸照片秒变艺术肖像画,已被CVPR 2019录取
  4. 针对部分16系显卡通过VS2017编译的YOLOV3测试成功但图像无检测框的问题:
  5. RVDS4.0 破解
  6. imp报IMP-00010,IMP-00013错误
  7. DbVisualizer解决中文乱码问题
  8. php简体转繁体类库源代码
  9. 字节跳动问我计算机网络,我一口气全答对!
  10. 2020秋季校园招聘深信服、噢易云、绿盟面筋