python条码识别

1.zxing识别二维码、条形码python

 

项目地址:https://github.com/oostendo/python-zxinggit

2.pyzbargithub

环境:ide

  • python 3.7
  • Win7

依赖包安装:测试

1字体

2spa

3日志

4code

5orm

pip install pillow

pip install opencv-python

pip install opencv-contrib-python

pip install numpy

pip instal pyzbar

 

首先使用cv2打开摄像头进行测试

1

2

3

4

5

6

7

8

9

10

11

12

import numpy as np

import cv2

capture = cv2.VideoCapture(0,cv2.CAP_DSHOW)

capture.set(3,640)

capture.set(4,480)

while True:

    # 读取摄像头中的图像,ok为是否读取成功的判断参数

    ret,img = capture.read()

    cv2.imshow('frame', img)

    = cv2.waitKey(1)

    if == 27:    # 'ESC'关闭

        break

 

若是看到屏幕出现一个窗口,上面显示着你的摄像头所拍摄到的画面说明测试成功

而后就直接上代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

#written by DY

#http://dyblog.tk

#e-mail:duyun888888@qq.com

import cv2

from PIL import Image, ImageDraw, ImageFont

import csv

import pyzbar.pyzbar as pyzbar

import numpy

import time

#-----------------time----------

time1 = (time.strftime("%Y!%m@%d(%H*%M)%S`", time.localtime()))

time2 = time1.replace('!''年')

time3 = time2.replace('@''月')

time4 = time3.replace('(''日')

time5 = time4.replace('*''时')

time6 = time5.replace(')''分')

timenow = time6.replace('`''秒')

#-----------------time done----

barcodeData1 = ''

 

found = set()

capture = cv2.VideoCapture(0,cv2.CAP_DSHOW)

Files = "qrcode+barcode.dat"#新建一个日志,方便查阅(不须要能够删除)

while(1):

    ret,frame = capture.read()

    test = pyzbar.decode(frame)

    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

    barcodes = pyzbar.decode(gray)

    for barcode in barcodes:

        (x, y, w, h) = barcode.rect

        cv2.rectangle(frame, (x, y), (x + w, y + h), (2552550), 2)

        barcodeData = barcode.data.decode("utf-8")

        barcodeType = barcode.type

        if barcodeData=='' or barcodeData!=barcodeData1:

            barcodeData1 = barcodeData

            #======================能够不须要,这是在图片上进行标注,里面采用了字体文件==============================

            img_PIL = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))

            font = ImageFont.truetype('arialbd.ttf'25)#前面是字体文件,后面是字号

            fillColor = (0,255,0)

            position = (x, y-25)

            strl = barcodeData

            draw = ImageDraw.Draw(img_PIL)

            draw.text(position, strl,font=font,fill=fillColor)

            img_PIL.save('Identification_results.jpg','jpeg')#保存一张标记过的图片

            #====================================================

            print("Recognize result>>> type: {0}  content: {1}".format(barcodeType, barcodeData))

        else:

            pass

        if barcodeType not in found or barcodeData not in found:

            with open(Files,'a+') as w:

                csv_write = csv.writer(w)

                date = ['类型:'+barcodeType+'  识别结果:'+barcodeData+'   时间:'+timenow]

                csv_write.writerow(date)

            found.add(barcodeData)

    cv2.imshow('qrcode+barcode',frame)

    = cv2.waitKey(1)

    if == 27:

        break

#written by DY

#http://dyblog.tk

#e-mail:duyun888888@qq.com

相关文章
相关标签/搜索