关于二维码和条形码的检测和识别,在OpenCV中已经有提供了对应的API,cv2.QRCodeDetector() | cv2.barcode_BarcodeDetector() ,相关的实现极其简单:

只需要上述短短三行代码即可检测二维码和条形码的位置并识别码内信息,相关parameter和retval自行查找。

下述是不借助OpenCV直接实现的API来实现定位

Code:

 1 def barcode(image):
2 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
3 blur = cv2.GaussianBlur(gray, (5, 5), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
4 cv2.imshow('GaussianBlur', blur)
5 kernel_x = numpy.array([
6 [-1, 0, 1],
7 [-2, 0, 2],
8 [-1, 0, 1]
9 ])
10 kernel_y = numpy.array([
11 [-1, -2, -1],
12 [0, 0, 0],
13 [1, 2, 1]
14 ])
15 x = cv2.filter2D(blur, -1, kernel_x)
16 y = cv2.filter2D(blur, -1, kernel_y)
17 cv2.imshow('Sobel', x)
18 _, threshold = cv2.threshold(x, 127, 255, cv2.THRESH_BINARY)
19 kernel = numpy.ones((3, 3), numpy.uint8)
20 r_e = cv2.erode(threshold, kernel, iterations=1)
21 r_d = cv2.dilate(r_e, kernel, iterations=10)
22 contours, hir = cv2.findContours(r_d, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
23 max_contour = numpy.array(max(contours, key=cv2.contourArea))
24 x, y, w, h = cv2.boundingRect(max_contour)
25 cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

定位思路:

1、转灰度图

2、通过高斯模糊去除图像噪点,如果不使用高斯模糊去噪的话,条形码的线段会有些弯曲,看场景是否需要

3、使用sobel进行边缘检测,请注意分辨sobel水平变换和垂直变换的差别

4、进行二值化,相比于上一步的sobel,可以发现消除一些独立的噪点,但是还是保留了一些,可以更改参数再进行调整

5、进行形态学运算(膨胀腐蚀)对应代码中的iterations的次数是尝试过后的最佳成效,可以自己调整次数看看不同效果

6、寻找轮廓,通过对原图处理后,我们得到的上述最终的效果图可以发现,最大的白色区域就是我们需要的条形码区域,所以我们通过cv2.contourArea()和max()配合来寻找最大面积,最后在原图上绘制出我们的目标区域

值得注意的是,上述思路有比较大的局限性,首先是针对原图的显示问题,如果不是水平拍摄,是垂直拍摄时,我们需要更改sobel使用垂直变换卷积核,或者对原图进行旋转。

其次是,我们定位最终的barcode区域使用到了max来查找最大面积,所以这就意味着,原图中,barcode整体轮廓必须是最大的。

参考博客:一种改进的条形码定位方案,基于openCV实现,附完整源代码_opencv条形码识别-CSDN博客

【Python】【OpenCV】定位条形码(一)的更多相关文章

  1. python+opencv实现车牌定位

    写在前面 HIT大三上学期视听觉信号处理课程中视觉部分的实验三,经过和学长们实验的对比发现每一级实验要求都不一样,因此这里标明了是2019年秋季学期的视觉实验三. 由于时间紧张,代码没有进行任何优化, ...

  2. python opencv识别蓝牌车牌号 之 取出车牌号 (1/3)

    概述 车牌识别是计算机视频图像识别技术在车辆牌照识别中的一种应用,通常来讲如果结合opencv进行车牌识别主要分为四个大步骤,分别为: 图像采集 车牌定位 分割车牌字符 字符识别 当然,如果结合了机器 ...

  3. 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台

    搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...

  4. .NET + OpenCV & Python + OpenCV 配置

    最近需要做一个图像识别的GUI应用,权衡了Opencv+ 1)QT,2)Python GUI,3).NET后选择了.NET... 本文给出C#+Opencv和Python+Opencv的相应参考,节省 ...

  5. RPi 2B python opencv camera demo example

    /************************************************************************************** * RPi 2B pyt ...

  6. Python+OpenCV图像处理(一)

    Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...

  7. python opencv show图片,debug技巧

    debug的时候可以直接把图片画出来debug. imshow函数就是python opencv的展示图片的函数,第一个是你要起的图片名,第二个是图片本身.waitKey函数是用来展示图片多久的,默认 ...

  8. Python+OpenCV图像处理(一)——读取显示一张图片

    先在此处先声明,后面学习python+opencv图像处理时均参考这位博主的博文https://blog.csdn.net/u011321546/article/category/7495016/2? ...

  9. Python+opencv 图像拼接

    1.http://www.cnblogs.com/skyfsm/p/7411961.html ,给出了很好地拼接算法实现 2.由于不是Python的,所以简单做了一些翻译转成Python+opencv ...

  10. 【python+opencv】直线检测+圆检测

     Python+OpenCV图像处理—— 直线检测 直线检测理论知识: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进 ...

随机推荐

  1. 提高 MySQL查询效率的方法

    当涉及到提高MySQL查询效率时,以下是一些重要的策略和技巧,可以帮助你优化数据库性能.无论你是一个Web开发者.数据工程师还是系统管理员,这些方法都可以帮助你确保你的MySQL数据库运行得更快.更有 ...

  2. 达梦数据库-DW-国产化--九五小庞

    武汉达梦数据库股份有限公司成立于2000年,是国内领先的数据库产品开发服务商,国内数据库基础软件产业发展的关键推动者.公司为客户提供各类数据库软件及集群软件.云计算与大数据等一系列数据库产品及相关技术 ...

  3. 2018-D

    2018-D 新建数据库 test0317,目录为考试目录,并在完成建表后备份 1.建表: use [test0317]; create table [STD_INFO]( [std_id] int ...

  4. C#/.NET/.NET Core优秀项目和框架2023年9月简报

    前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍.功能特点以及部分截图等(打不开或 ...

  5. 文心一言 VS 讯飞星火 VS chatgpt (103)-- 算法导论10.1 1题

    一.用go语言,仿照图 10-1,画图表示依次执行操作 PUSH(S,4).PUSH(S,1).PUSH(S,3).POP(S).PUSH(S,8)和 POP(S)每一步的结果,栈 S初始为空,存储于 ...

  6. Python面向对象——封装

    文章目录 内容回顾 封装 为何要隐藏? 作业 内容回顾 上节课复习: 1.编程范式/思想 面向过程 介绍: 核心是"过程"二字 过程就是"流水线" 过程终极奥义 ...

  7. android 中ids.xml资源的使用

    ids.xml 前面我们见识过ids.xml文件,但是这个文件是什么意思呢?我们来看下文档中的介绍: 先看下它给的例子: XML file saved at res/values/ids.xml: 使 ...

  8. About Info-ZIP

    LATEST RELEASES: Zip 3.00 was released on 7 July 2008. WiZ 5.03 was released on 11 March 2005. UnZip ...

  9. ssr服务器极致渲染

    域名 RDS 云服务器 ECS 中国站   文档购物车ICP备案控制台   金秋上云季     首页 技术与产品   社区   直播   开发者学堂   开发者云   工具与资源中心   天池大赛 飞 ...

  10. TOBO

    然而并不会做. 最后就照着题解码了一遍/kk 真的好长啊.看时间就知道写了多久... upd in 2022: 我现在已经找不到原题面是什么了( 不过感觉把这样一篇不算题解的东西放进"题解& ...