日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

OpenCV(项目)二维码识别(二维码、条形码)

發布時間:2023/11/27 生活经验 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV(项目)二维码识别(二维码、条形码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

過程

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(项目)二维码识别(二维码、条形码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。