基于树莓派的二维码识别系统介绍

本文参考的原文的链接为https://blog.youkuaiyun.com/qq_25491201/article/details/51065547

并在他的代码的基础上修改得到的

详细的代码注释可以去原博客进行查看

再次我就贴上我的全部代码

'''# import the necessary packages
import simple_barcode_detection
import cv2
import numpy as np
import zbar
from PIL import Image


# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
font=cv2.FONT_HERSHEY_SIMPLEX
camera=cv2.VideoCapture(0)
while(True):
    # Capture frame-by-frame
    grabbed, frame = camera.read()
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    if not grabbed:
        break
    pil= Image.fromarray(frame).convert('L')
    width, height = pil.size
    raw = pil.tobytes()
    zarimage = zbar.Image(width, height, 'Y800', raw)
    scanner.scan(zarimage)
    for symbol in zarimage:
    # do something useful with results
    #if not symbol.count:
        if not symbol.count:
           # print ('decoded', symbol.type, 'symbol', '"%s"' % symbol.data)
            a=symbol.data
            data=a
            print (len(data))
            print ( '%s' % a) 
        cv2.putText(frame,symbol.data,(20,100),font,1,(0,255,0),4)
        cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
            break
cap.release()
cv2.destroyAllWindows()'''
# import the necessary packages
import simple_barcode_detection
from time import sleep 
import cv2
import numpy as np
#import const
import serial 
import zbar
from PIL import Image
import time
# create a reader
zuobiaoX=[13,37,62,75]
zuobiaoY=[20,60]
Z=[0,45,120]
numx0=0
numx1=0
numy=0
numy0=0
numy1=0
numy2=0
numy4=0
numy5=0
numz=0
numz0=0
numz1=0
numz2=0
numz3=0
b=0
b1=0
c=0
#const.A="X"
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.5)
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
font=cv2.FONT_HERSHEY_SIMPLEX
camera=cv2.VideoCapture(0)
ser.write("\r\n")
ser.write("G1 F10000")
ser.write("\r\n")
ser.write("G90")
ser.write("\r\n")
ser.write("M3 S45")
ser.write("\r\n")

def yunsuan(b):
    global numx0
    global numx1
    global numy0
    global numy1
    global numy2
    global numy4
    global numy5
    global numz0
    global numz1
    global numz2
    global numz3
    if b!=b1:
        numx1= ((b%10000/1000)-1)*36+35
        numx0=0
        numy0= (b%1000/100)*20+20
        #numz0= (b%10)*100
        zuoyou=b%100/10
        qufang=b%10
        if zuoyou==1:
            numz0=Z[0]
            numz1=Z[1]
            if qufang==1:
                numy0=numy0+10
                numy1=numy0-20
                numy4=10
                numz2=Z[0]
                numy5=0
                numz3=Z[1]
            else:
                numy0=numy0-10
                numy1=numy0+20
                numy4=0
                numz2=Z[1]
                numy5=10
                numz3=Z[0]
        else:
            numz0=Z[2]
            numz1=Z[1]
            if qufang==1:
                numy0=numy0+10
                numy1=numy0-10
            else:
                numy0=numy0-10
                numy1=numy0+10
        numx0="G01 X"+str(-numx0)
        numx1="G01 X"+str(-numx1)
        numy0="G01 Y"+str(numy0)
        numy1="G01 Y"+str(numy1)
        numy4="G01 Y"+str(numy4)
        numy5="G01 Y"+str(numy5)
        numy2="G01 Y0"
        numz0="M3 S"+str(numz0)
        numz1="M3 S"+str(numz1)
        numz2="M3 S"+str(numz2)
        numz3="M3 S"+str(numz3)
        time.sleep(3)
        ser.write(numz2)
        ser.write("\r\n")
        print(numz2)
        ser.write(numy4)
        ser.write("\r\n")
        print(numy4)
        ser.write(numz1)
        ser.write("\r\n")
        print(numz1)
        ser.write(numx1)
        ser.write("\r\n")
        print(numx1)
        ser.write(numy0)
        ser.write("\r\n")
        print(numy0)
        ser.write(numz0)
        ser.write("\r\n")
        print(numz0)
        ser.write(numy1)
        ser.write("\r\n")
        print(numy1)
        ser.write(numz1)
        ser.write("\r\n")
        print(numz1)
        ser.write(numy2)
        ser.write("\r\n")
        print(numy2)
        ser.write(numx0)
        ser.write("\r\n")
        print(numx0)
        ser.write(numy5)
        ser.write("\r\n")
        print(numy5)
        ser.write(numz3)
        ser.write("\r\n")
        print(numz3)
        ser.write(numy2)
        ser.write("\r\n")
        print(numy2)
        ser.write(numz1)
        ser.write("\r\n")
    return  numx0,numx1,numy0,numy1,numz0,numz1

while(True):
    # Capture frame-by-frame
    grabbed, frame = camera.read()
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    if not grabbed:
        break
    pil= Image.fromarray(frame).convert('L')
    width, height = pil.size
    raw = pil.tobytes()
    zarimage = zbar.Image(width, height, 'Y800', raw)
    scanner.scan(zarimage)
    for symbol in zarimage:
    # do something useful with results
    #if not symbol.count:
        if not symbol.count:
            a=symbol.data
            b=int(a)
           # print ('decoded', symbol.type, 'symbol', '"%s"' % symbol.data)
            print ( '%s' % b)
            print ( '%s' % b1)
            #print (b)
            #print (len(b))
            yunsuan(b)
            '''c=c+1
            if c>50:
                yunsuan(b)
                c=0'''
            #print (c)
            #print (b)
            b1=b
            print ( '%s' % b1)
        #print(yunsuan(b))
        #print(numx0)
           
        cv2.putText(frame,symbol.data,(20,100),font,1,(0,255,0),4)
        cv2.imshow('frame',frame)
        #b=b1q
    if cv2.waitKey(1) & 0xFF == ord('q'):
            break
#cap.release()
cv2.destroyAllWindows()


此项目的视频链接为:https://www.bilibili.com/video/av52648668?from=search&seid=1755762574861976290

此链接为本人的毕业设计视频

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值