本文参考的原文的链接为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
此链接为本人的毕业设计视频