文章目录

  • 前言
  • 一、OpenCV自带二维码识别功能
  • 二、使用pyzbar识别
  • 三、串口发送数据
  • 四、播放音乐
  • 总结

前言

最终实现视频动态识别二维码。


一、OpenCV自带二维码识别功能

import cv2 as cv
import numpy as npsrc_image = cv.imread("E:\VSCode\qrcoder\hello.jpg")
qrcoder = cv.QRCodeDetector()
codeinfo, points, straight_qrcode = qrcoder.detectAndDecode(src_image)
cv.drawContours(src_image, [np.int32(points)], 0, (0, 0, 255), 2)
print(points)
print("qrcode :", codeinfo)
cv.imshow("result", src_image)
cv.waitKey(0)

points 得到的二维码四个点的坐标信息。

二、使用pyzbar识别

import cv2
import pyzbar.pyzbar as pyzbar
import numpy as np
from PIL import Image, ImageDraw, ImageFontdef decodeDisplay(video):gray = cv2.cvtColor(video, cv2.COLOR_BGR2GRAY)barcodes = pyzbar.decode(gray)for barcode in barcodes:(x, y, w, h) = barcode.rect   # 提取二维码的位置,然后用边框标识出来在视频中cv2.rectangle(video, (x, y), (x + w, y + h), (0, 255, 0), 2)barcodeData = barcode.data.decode("utf-8")   # 字符串转换  barcodeType = barcode.type# 在图像上面显示识别出来的内容   #不能显示中文# text = "{}".format(barcodeData)# cv2.putText(video, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,1, (0, 255, 0), 2)img_PIL = Image.fromarray(cv2.cvtColor(video, cv2.COLOR_BGR2RGB))  font = ImageFont.truetype('font/simsun.ttc', 35)      # 参数(字体,大小)  fillColor = (0,255,255)      # 字体颜色(rgb)  position = (x, y-50)      # 文字输出位置  str = barcodeData      # 输出内容draw = ImageDraw.Draw(img_PIL)draw.text(position, str, font=font, fill=fillColor)video = np.array(img_PIL)print("[扫描结果] 二维码类别: {0} 内容: {1}".format(barcodeType, barcodeData))cv2.imshow("cam", video)def detect():cv2.namedWindow("hello",cv2.WINDOW_NORMAL)cam = cv2.VideoCapture(0)while True:ret, frame = cam.read()decodeDisplay(frame)if(cv2.waitKey(5)==27):breakcam.release()cv2.destroyAllWindows()if __name__ == '__main__':detect()

三、串口发送数据

import serial ser = serial.Serial("com12", 115200, timeout=0.5)
UartSend_Data = bytearray([0xff, 0x00, 0x00, 0x00])
ser.write(UartSend_Data)result=ser.write("nihao你好 ".encode("gbk"))
print("写总字节数:",result)# print(ser.read())#读一个字节
# print(ser.read(10).decode("gbk"))#读十个字节
# print(ser.readline().decode("gbk"))#读一行
# print(ser.readlines())#读取多行,返回列表,必须匹配超时(timeout)使用
# print(ser.in_waiting)#获取输入缓冲区的剩余字节数
# print(ser.out_waiting)#获取输出缓冲区的字节数def serload():if ser.in_waiting:str1 = ser.readline().decode('GBK')  # 读一行,以/n结束。print(str1)
while True:serload()

四、播放音乐

from pygame import mixer
import timemixer.init()
mixer.music.load('E:/VSCode/qrcoder/14361.mp3')
mixer.music.play()
time.sleep(5)
mixer.music.stop()

总结

把上述4个功能结合在一起,当识别到特定二维码开启音乐并且串口发送数据给单片机。留给你完成。

【OpenCV】二维码识别相关推荐

  1. opencv二维码识别解码

    目的: 使用opencv库识别QR二维码,框出图片中的二维码,并使用开源库Zxing解码,在这过程中学习理解opencv库相应的函数. 环境: 1. window7系统 2. QT create 1. ...

  2. Zbar+ROS+opencv二维码识别与定位研究(一)

    1.本文利用二维码的边缘信息,对其进行定位,经检验在3-4m以内有良好的定位效果 2.主要步骤: 原图像大小调整,提高运算效率:转化为灰度图:高斯平滑滤波: 求得水平和垂直方向灰度图像的梯度差,使用S ...

  3. OpenCV4二维码识别测试

    OpenCV4引入了二维码识别,函数为cv::QRCodeDetector,用起来相对简单,本文附c++版本OpenCV二维码识别的程序. 实测效果: 原图: 效果图: 识别结果为:123456789 ...

  4. Python基于pyzbar、opencv、pyqt5库,实现二维码识别 gui 应用程序开发

    二维码组成结构基本介绍 二维码识别背景介绍 视觉的方法可以用来估计位置和姿态.最容易想到的是在目标上布置多个容易识别的特征,这样使用opencv相机标定和.相机畸变矫正.轮廓提取.solvepnp来获 ...

  5. Jetson nano 摄像头二维码识别 Opencv zbar QT

    环境以及前言 环境 jetson nano Linux ubuntu 18.4 QT版本 QT5.98 摄像头 Csi摄像头 Opencv Jetson nano 自带的-.- 应该是4.1?不太清楚 ...

  6. 基于ZBar,OpenCV和Python的二维码识别

    0 前言 今天分享一个之前做过的二维码识别,参考:https://www.pyimagesearch.com/2018/05/21/an-opencv-barcode-and-qr-code-scan ...

  7. opencv调用微信的二维码识别引擎

    导读 用过二维码识别的小伙伴们都知道,微信的二维码识别确实要比开源的二维码识别zxing和zbar要强不少,zxing和zbar对小的二维码以及模糊的二维码基本上是识别不出来的,有时候一张包含二维码的 ...

  8. 数字图像处理二维码识别 python+opencv实现二维码实时识别

    数字图像处理二维码识别 python+opencv实现二维码实时识别 特点: (1)可以实现普通二维码,条形码: (2)解决了opencv输出中文乱码的问题 (3)增加网页自动跳转功能 (4)实现二维 ...

  9. 使用 OpenCV + 微信二维码引擎实现二维码识别

    Part1背景 今年自疫情以来,我都没有写过文章.一方面是疫情导致居家办公比较烦躁,另一方面最近有点懒了.但是工作还是要继续,趁这几天优化了一下最近的项目,我整理了一下如何使用 OpenCV 和微信二 ...

最新文章

  1. AlertDialog 点击空白处、返回按钮 行为
  2. 李菲菲课程笔记:Deep Learning for Computer Vision – Introduction to Convolution Neural Networks
  3. React面试题总结,就是这么简单
  4. 农产品加工进销存单_农产品进销存ERP—物资的内部腾挪转换也是交易的一种形式...
  5. php调用第三方的api,PHP接口编程——调用第三方接口获取天气
  6. ctfshow-WEB-web12( 利用代码执行漏洞读取敏感文件)
  7. 个人vscode插件配置全记录
  8. android微信照片未发送成功,解决Android整合微信分享无法发送图片问题
  9. POST 请求出现异常!java.io.IOException: Server returned HTTP response code: 400 for URL
  10. 高可用、弹性动态的金融级移动架构在蚂蚁金服的演进之路
  11. 解决sql server挂起
  12. linux c post上传文件,Linux C语言Http POST上传图片
  13. Solr中的日期/时间表示
  14. 两步使用Ubuntu 创建自己的网站
  15. java框体怎么添加背景图,文本框添加背景图片,文本框背景图片,public class
  16. 学嵌入式为什么要学Linux?
  17. 上门家教app开发的前景
  18. 中小型软件开发项目管理
  19. 免费可商用的矢量插图网站
  20. 微信引流的万能方法 微信引流的万能方法

热门文章

  1. 关于 “美女” 一词
  2. 决胜Spark大数据时代企业级最佳实践:Spark CoreSpark SQLGraphXMachine LearningBest Practice
  3. Fancybox 的学习
  4. 时代金融杂志时代金融杂志社时代金融编辑部2022年第12期目录
  5. prototype和singleton有什么区别
  6. 寻找 DeFi 保险的合理保费
  7. java sqlserver uuid_java中的UUID和sql server中的uniqueidentifier的问题
  8. 盐城北大青鸟IT精英挑战赛获奖作品展--《魔女薇洛》
  9. FTP服务器ip地址修改,文件上传和下载详解
  10. VsCode自带Emmet基础用法(基本够用了)