目录

过程

1、获取图片中的二维码信息

2、获取视频中的二维码信息

3、检测出二维码框

4、显示数据

5、添加数据,判断二维码是否授权

5-1:、添加数据

5-2、读取文件信息,放入数组

5-3、判断二维码是否授权

总代码


过程

1、获取图片中的二维码信息

# 检测图像中的码(解码)
def Read_Decode_Pic():img = cv2.imread('Resource/qrcode.jpg')# 遍历解码for code in decode(img):print("条形码/二维码:", code)print("条形码/二维码数据:", code.data.decode('utf-8'))    #解码数据

注:要解码数据的话,必须在for循环中进行,不能直接赋值 

二维码:

条形码:

2、获取视频中的二维码信息

# 检测视频中的码(解码)
def Read_Decode_Cam():cap = cv2.VideoCapture(0)               #打开视频while True:success, img = cap.read()           #获取每一帧图片for code in decode(img):            #解码print("条形码/二维码:", code)    #解码内容print("条形码/二维码数据:", code.data.decode('utf-8'))  # 解码数据cv2.imshow('result', img)           #逐像素显示,不断更替,相当于视频cv2.waitKey(1)                      #延时1ms

3、检测出二维码框

如果是矩形框的话,比较方便,但是旋转情况下,会不准确。因为rect获取的是正的矩形,无法旋转。

# 画出矩形
pts = code.rect                             #得到矩形四个角
cv2.rectangle(image, pts, (255,0,255), 3)   #画出矩形

所以我们需要获取多边形对它进行旋转:

注:polylines函数中需要的坐标类型是是CV_32S,所以需要转换一下

 # 多边形获取(矩形的框)pts = np.array(code.polygon, np.int32)          #获取多边形坐标cv2.polylines(image, [pts], True, (0,0,255), 5) #画多边形框

可以发现,这时我们可以检测到旋转的矩形框。

4、显示数据

获取矩形框的左上角作为Text的坐标(左边坐标),显示数据

# 显示数据pts_rect = code.rectprint(pts_rect)cv2.putText(image, data, (pts_rect[0],pts_rect[1]), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,0,0), 2)#                  显示数据  矩形坐标                   字体类型                 字体大小 颜色     粗细

5、添加数据,判断二维码是否授权

创建一个文件,里面放入一些二维码数据库,读取文件,判断二维码的数据是否在数据库里面。(不在则红色,表示未授权;在则绿色,表示已授权)

5-1:、添加数据

5-2、读取文件信息,放入数组

# 读取文件
def Read():global Data_ArrayData_Array = open('Authorited.txt').read().splitlines() #按行分隔print('已授权的数据:\n', Data_Array)

5-3、判断二维码是否授权

# 判断二维码是否授权
def Judge(data):global colorif data in Data_Array:      #成功color = (0, 255, 0)     #绿色标记print('Authorized\n')else:                       #失败color = (0, 0, 255)     #红色标记print('Unauthorized\n')

总代码

# 二维码识别
import cv2
import numpy as np
from pyzbar.pyzbar import decode# 读取文件
def Read():global Data_ArrayData_Array = open('Authorited.txt').read().splitlines() #按行分隔print('已授权的数据:',Data_Array,'\n')# 判断二维码是否授权
def Judge(data):global colorif data in Data_Array:      #成功color = (0, 255, 0)     #绿色标记print('Authorized\n')else:                       #失败color = (0, 0, 255)     #红色标记print('Unauthorized\n')# 检测图像中的码(解码)
def Read_Decode_Pic(image):# 遍历解码for code in decode(image):# print("条形码/二维码:", code)data = code.data.decode('utf-8')print("条形码/二维码数据:", data)    #解码数据# 判断二维码是否授权Judge(data)# 多边形获取(矩形的框)pts_poly= np.array(code.polygon, np.int32)          #获取多边形坐标cv2.polylines(image, [pts_poly], True, color, 5)    #画多边形框# 显示数据(获取矩形框的左上角作为Text的坐标(左边坐标),显示数据)pts_rect = code.rect# print(pts_rect)cv2.putText(image, data, (pts_rect[0],pts_rect[1]), cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2)#                  显示数据  矩形坐标                   字体类型                 字体大小 颜色     粗细cv2.imshow('image', image)      #等画出所有矩形后显示# 检测视频中的码(解码)
def Read_Decode_Cam():cap = cv2.VideoCapture(0)           #打开视频cap.set(3, 1000)                    #帧的宽度cap.set(4, 800)                     #帧的高度while True:success, image = cap.read()     #获取每一帧图片cv2.imshow('image', image)image = Read_Decode_Pic(image)  #对每一帧图片检测cv2.waitKey(1)                  #延时1msif __name__ == '__main__':Read()                          #读取文件img = cv2.imread('Resource/qrcode.jpg')Read_Decode_Pic(img)           # 检测图像中的码(解码)Read_Decode_Cam()              # 检测视频中的码(解码)cv2.waitKey(0)

OpenCV(项目)二维码识别(二维码、条形码)相关推荐

  1. opencv之调用摄像头动态识别二维码

    结合前几篇做的工作,实现一下动态识别二维码 opencv之调用摄像头动态识别二维码

  2. Opencv+Zbar二维码识别(一维码校正)

    一维码由一组规则排列的黑色线条.白色线条以及对应的字符组成.对倾斜的(没有严重形变)一维码的角度校正,可以根据其黑白相间.排列规则的特点,计算傅里叶频谱,通过傅里叶频谱中直线的倾斜角度计算空间域图像一 ...

  3. 小程序实现扫码识别二维码内容

    前言 在开发程序过程中经常和二维码打交道,经常要查看二维码的内容是什么,所以决定自己开发一个可以识别二维码,生成二维码的小工具. 一.项目展示 用户可以识别生活中常见的支持条码.二维码.DataMat ...

  4. iOS二维码识别/二维码生成

    文章目录 前言 扫一扫识别二维码图片 长按图片识别二维码图片 生成二维码图片 代码完善 识别二维码图片优化 小结 前言 最近在做一个关于二维码的组件,已发布,现总结下. 开发的APP所需支持的最低版本 ...

  5. WinForm调用摄像头扫码识别二维码

    前言 因公司业务需求,需要在Windows系统下调用摄像头识别二维码需求,就有了这个功能.根据网上网友提供的一些资料,自己整合应用到项目中,效果还不错(就是感觉像素不是太好).现在将调用摄像头+识别二 ...

  6. uniapp 扫码识别(一维码、二维码)

    注:需开启扫码功能,首先要在manifest.json配置中打开APP模块配置中 Barcode(扫码).Camera&Gallery(相机和相册) 自带扫码插件:uni.scanCode(O ...

  7. android扫码二维码识别二维码

    1. 快速集成扫码二维码,识别二维码功能.经过加工处理优化的,直接返回扫码结果字符串和图片的bitmap数据. 直接上代码: package com.xinxinchelian.myscanzxing ...

  8. 如何使用h5-scan-qrcode插件实现一个h5页面扫码识别二维码功能

    为了适应公司代码全程使用jquery构造 如需其他js或者vue 可根据此代码去改(因为好多地方会用到这个东西所以我封装成了一个js文件) https://dragonir.github.io/h5- ...

  9. Opencv项目实战-信用卡数字识别

    Opencv项目实战:信用卡数字识别 导入库,定义展示函数 import cv2 import numpy as np from imutils import contours import myut ...

  10. Opencv之python使用zxing识别二维码

    方式1: 安装方式: pip install zxing import zxingreader = zxing.BarCodeReader() barcode = reader.decode(&quo ...

最新文章

  1. IE6,7,8,FF兼容总结
  2. 招聘|字节跳动计算机视觉算法实习生
  3. 重温目标检测--YOLO v2 -- YOLO9000
  4. 超强、超详细Redis数据库入门教程
  5. 测试环境搭建流程_案例解析:一个完整的项目测试方案流程,应该是怎么的?...
  6. JSR-303校验类型
  7. Struts编程心得
  8. 科沃斯擦窗机器人擦不干净怎么办_家用自动擦玻璃机器人哪种好呢?玻妞和科沃斯擦窗机器人能干净吗...
  9. 【教女朋友学网络系列2】之进制转换及IP地址类
  10. 创业三年来的一些感想 - 创业篇1
  11. Java命令行界面(第9部分):parse-cmd
  12. 虚拟机网卡无法启动获取ip地址
  13. [转]将c#中datagridview中的数据导出到excel中
  14. mro python_Python之super与MRO
  15. 新年喜报!10人通过RHCA、60人通过RHCE!
  16. 武夫提笔——席卷世界Nodejs之初步对比:与opa各占几分春色?
  17. Python数据提取-lxml模块
  18. Python迷宫生成器
  19. sqlplus常用命令
  20. IDEA配置远程debug

热门文章

  1. Android 项目版本的修改
  2. Java基础(七)--Exception异常处理
  3. mybatis逆向工程配置文件怎么再偷懒(懒出天际)
  4. 0x58 数据结构优化DP
  5. 2022-2028年中国消防车行业市场前瞻与投资战略规划分析报告
  6. 2022-2028年中国工业4.0深度调研及投资前景预测报告(全卷)
  7. Python学习笔记第五周
  8. 与jQuery的感情碰撞——由浅入深学jQuery
  9. [唐胡璐]QTP框架 - 关键字驱动测试框架之七 - Settings管理
  10. 成功将BlogEngine 1.5 升级到了BlogEngine 2.0