利用opencv实现二维码检测(简单易上手)

这篇具有很好参考价值的文章主要介绍了利用opencv实现二维码检测(简单易上手)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言 

二维码检测是一个简单易上手的小项目,掌握opencv基础的语句就可以实现。解析二维码的过程有专门的库来实现,所以只需调相应的库就好了。在实现这个代码前,先要配置opencv环境。

Python与Opencv配置安装_哔哩哔哩_bilibili 这里用anaconda配置很方便

相关代码

图像的简单处理

import cv2 #导入opencv
img=cv2.imread('path') #读取图片路径,path指图片相关路径
cv2.imshow('name', img) #显示图像(窗口命名,传入图像变量名)
cv2.waitKey(0) #窗口等待时间,以毫秒为单位。当传入参数为0时,图像将一直显示,直至关闭。
cv2.waitKey(1) == 27 #也可以通过按键绑定来执行窗口的退出,此处为esc键退出
cv2.destroyAllWindows() #把图像从内存中删除

视频的简单处理

cap = cv2.VideoCapture(0) #读取视频文件,0是打开默认摄像头(即笔记本自带的),1是第二个摄像头
While true: #读取视频的每一帧
    success, img = cap.read() #success表示有无成功读取的bool值,img是每一帧图像
    cv2.show(img) #在窗口显示这一帧

简单的绘图


start_point = (100, 100) #定义矩形的左上角和右下角坐标
end_point = (400, 400)
color = (0, 255, 0)  #定义矩形的颜色和线宽(B,G,R)
thickness = 2 #线宽
cv2.rectangle(img, start_point, end_point, color, thickness) #绘制矩形


center_coordinates = (256, 256) #定义圆心坐标和半径
radius = 100
color = (0, 255, 0) # 定义圆的颜色和线宽
thickness = 2
cv2.circle(img, center_coordinates, radius, color, thickness) #绘制圆

实现思路

摄像头帧画面的提取:调用while循环持续展示摄像头捕捉到的画面(如果不关闭显示窗口的话会一直执行while语句里的代码)

二维码位置提取和框定:利用point提取二维码位置,point 是一个包含四个元素的元组,表示矩形的左上角坐标和宽高。再利用cv2.rectangle 函数绘制矩形,其中 (point[0], point[1]) 是左上角坐标,(point[0]+point[2], point[1]+point[3]) 是右下角坐标

二维码解析和网页跳转(库实现):(在python的设置里下载pyzbar的软件包)调用pyzbar库的decode函数获取二维码信息,调用webbrowser跳转网页(这个库是py自带的,直接调)

二维码信息展示创建data列表存入解析出来的网址

要注意的问题和解决方法

正常来说摄像头在捕捉到二维码并进行解析后,会展示解析出来的地址并跳转到相应的网页。

而此时如果不关闭显示窗口的话,二维码就会持续被摄像头捕捉,代码就会一直去执行刚刚的操作,也就是会不断新增同一个网页和重复显示已经出现的地址。

简单来说就是要对代码进行优化,让他不要进行重复的操作,即有几个二维码就生成几个信息。

所以我们要设置一个计数器,用来计算data列表中存入了几个信息。还要设置一个状态值flag,我们可以理解为bool值,用来判定该二维码是否已经被解析过。1表示未被解析过,要执行解析操作,0表示已被解析,跳过该过程。

当时用了近一个小时才解决掉了这个问题。。。。。。

结尾

这只是opencv很基础的一部分。还有更多的知识和理论等着我们去学习。我也是计算机视觉领域的初学者(大一新牲),纯纯小白一个。也是第一次写技术文档,浅浅分享我的心得,希望对大家有所帮助。文章来源地址https://www.toymoban.com/news/detail-757756.html

最终代码展示

import cv2
import webbrowser #用于网页跳转
from pyzbar.pyzbar import decode #导入pyzbar库,该库是一个用于解析条形码和二维码的Python库
cap = cv2.VideoCapture(0) #调用摄像头
data = ['Code'] #存放在二维码识别到的地址
a = 0 #记录data列表中解析二维码的地址个数
flag = 1 #flag为bool值,为1的时候表示data列表中没有该二维码地址,则执行添加操作。

while True: #让摄像头画面一帧一帧显示
    success , img = cap.read()  #img是一帧的信息,success是一个bool值,表示是否成功读取到这一帧
    codes = decode(img) #使用pyzbar解码图像中的条形码或二维码

    for code in codes: #遍历解码结果
        code_data = code.data.decode('utf-8') #提取解码的数据
        for i in range(a+1): #遍历data列表查看识别到的二维码地址是否已存在
            if (code_data == data[i]): #如果存在则flag=0,不执行插入操作
                flag = 0

        if flag == 1: #将新的地址插入到data列表
            data.append(code_data)
            webbrowser.open(code_data)
            print(data)
            a += 1 #计数
        flag = 1   #刷新flag的值
        point = code.rect  # 提取条形码或二维码的位置信息
        cv2.rectangle(img,(point[0],point[1]),(point[0]+point[2],point[1]+point[3]),(0,255,0),5)  #框定二维码区域
    cv2.namedWindow('Code', cv2.WINDOW_NORMAL)    #创建窗口
    cv2.imshow("Code",img)      #展示窗口
    if cv2.waitKey(1) == 27:    #esc退出
        break


到了这里,关于利用opencv实现二维码检测(简单易上手)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机毕设 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

    今天学长向大家介绍一个机器视觉的毕设项目,二维码 / 条形码检测与识别 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 物体检测就是对数字图像中一类特定的物体的位置进行自动检测。基本的检测框架有两种: 一种是以滑动窗口为单位对图像进行扫描

    2024年02月10日
    浏览(52)
  • 互联网加竞赛 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

    🔥 优质竞赛项目系列,今天要分享的是 基于机器学习的二维码识别检测 - opencv 二维码 识别检测 机器视觉 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 物体检测就是对数字图像中一类特定的物体的

    2024年01月18日
    浏览(73)
  • opencv检测二维码和条形码

    使用excel可以实现制作二维码,但只能实现做英文和数字类型的,步骤如下: 在任意单元格输入内容 选项卡里找到开发工具—插入—点击ActiveX控件的最右下角。 弹出的窗口内,往下滑动选择Microsoft BarCode Control 16.0后,点击确定。 在任意区域,摁住鼠标左键不放,拖动鼠标,

    2024年02月10日
    浏览(55)
  • 10. Opencv检测并截取图中二维码

    1. 说明 在二维码扫描功能开发中,使用相机扫描图片时,往往图片中的信息比较多样,可能会造成二维码检测失败的问题。一种提高检测精度的方式就是把二维码在图片中单独抠出来,去除其它冗余信息,然后再去识别这张提取出来的二维码。本篇博客记录采用的一种实现二

    2024年02月03日
    浏览(36)
  • 11. 在Opencv中利用仿射变换处理二维码变形问题

    1. 说明 在前一篇博客中记录了如何在一张图片中单独提取出二维码区域,考虑一种情况:如果二维码图片拍摄时并非是正对着二维码拍摄的,那么整张图片相对来说就发生了一定的倾斜角度,最终截取到的二维码也是有一定的变形的。针对形状发生变化的二维码,如果想把它

    2024年01月21日
    浏览(35)
  • OpenCV快速入门:目标检测——轮廓检测、轮廓的距、点集拟合和二维码检测

    在当今数字化时代,计算机视觉的崛起使得目标检测成为科技领域中的一项关键技术。本文将带您快速入门OpenCV中的目标检测,深入探讨轮廓检测、轮廓的距、点集拟合以及二维码检测等核心概念。 OpenCV,作为一种强大的开源计算机视觉库,为开发者提供了丰富的工具和算法

    2024年01月16日
    浏览(57)
  • Android实现生成二维码以及扫描二维码的功能(超级简单!)

    文章目录 ​​​​​​ 前言 二、实现生成二维码的功能 三、实现扫面二维码的功能 总结 提示:这里可以添加本文要记录的大概内容: 我是通过一个第三方库来实现二维码的生成,以及扫描二维码的功能,开源库如下: 一、布局文件如下 布局比较简单,就只有简单的一些

    2024年02月12日
    浏览(56)
  • 数字图像处理二维码识别python+opencv实现二维码实时识别

    数字图像处理二维码识别 python+opencv实现二维码实时识别 特点: (1)可以实现普通二维码,条形码; (2)解决了opencv输出中文乱码的问题 (3)增加网页自动跳转功能 (4)实现二维码实时检测和识别 代码保证原创、无错误、能正常运行(如果电脑环境配置没问题) 送二维

    2024年01月16日
    浏览(68)
  • opencv快速实现任意角度二维码矫正

    那天听到领导他们在讨论,说要将图片进行个矫正处理,还叫来了算法部的大佬来讨论将要如何处理这个,讨论场面很是激烈 不得不说好奇心是个很神奇的东西,就把我给吸引过去了 我定眼一看,感觉作为JAVA开发的我自己也能进行处理 因为看到了图片后,发现了图片中一个

    2024年02月05日
    浏览(65)
  • opencv案例03 -基于OpenCV实现二维码生成,发现,定位,识别

    废话不多说,直接上代码 运行效果: 会在当前目前生成一张图片 对生成的二维码识别 opencv从4代之后推出了二维码识别接口.调用方法是这样的.代码如下: 运行结果: 返回值有三个, 第一个result就是解码后的内容,例如我这个二维码的结果是\\\"B0018\\\",当然也可以是个纯数字. 第二

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包