資源簡介
opencv,python,工業(yè)反色二維碼,自動識別,記錄長度不合格數(shù)據(jù)
代碼片段和文件信息
“““
這是最新版數(shù)二維碼實(shí)時識別程序,已通過opencv函數(shù)實(shí)現(xiàn)攝像頭顏色翻轉(zhuǎn)和實(shí)時掃描
“““
import?time
import?ctypes
import?sys
from?cv2?import?cv2?as?cv2??#?在vscode里面直接import?cv2會顯示代碼有問題,其實(shí)是沒問題的,這種導(dǎo)入方式可以避免;
import?pyzbar.pyzbar?as?pyzbar
import?csv
“““這一部分是用來設(shè)置windows下顏色的“““
#?句柄號
STD_OUTPUT_HANDLE?=?-11
#?錯誤顯示,前景色
FOREGROUND_RED?=?0x04??#?紅
FOREGROUND_GREEN?=?0x02??#?綠
FOREGROUND_BLUE?=?0x01??#?藍(lán)
FOREGROUND_INTENSITY?=?0x08??#?加亮
#?錯誤顯示,背景色
BACKGROUND_WHITE?=?0x47??#?白
BACKGROUND_INTENSITY?=?0x80??#?加亮
color_error?=?FOREGROUND_RED?|?FOREGROUND_INTENSITY?|?BACKGROUND_WHITE?|?BACKGROUND_INTENSITY
std_out_handle?=?ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
def?set_cmd_color(color?handle=std_out_handle):
????bool?=?ctypes.windll.kernel32.SetConsoleTextAttribute(handle?color)
????return?bool
def?reset_color():
????set_cmd_color(FOREGROUND_RED?|?FOREGROUND_GREEN?|?FOREGROUND_BLUE)
def?print_color_text(color?text):
????set_cmd_color(color)
????sys.stdout.write(‘%s\n‘?%?text)??#?==>?print(text)
????reset_color()
PATH_OK?=?“OK_record.csv“
found_ok?=?set()
duration?=?2015
freq?=?3000
check_num_config_path?=?“config.txt“??#?此文檔為設(shè)置監(jiān)測用字符位數(shù),目前為30可依據(jù)需要更改,需要重啟程序才可以
cam_config_path?=?“cam_config.txt“??#?此文檔為設(shè)置攝像頭序號,PC寫1,筆記本寫2。
with?open(check_num_config_path?“r“)?as?f:
????check_data?=?f.readline()
????print(f“當(dāng)前數(shù)據(jù)長度限制為:{check_data}“)
with?open(cam_config_path?“r“)?as?l:
????cam_info?=?l.readline()
????print(f“檢測到攝像頭配置文件,當(dāng)前使用攝像頭序號為:{cam_info}“)
????print(“攝像頭唯一時,建議將該數(shù)字設(shè)置為1,筆記本建議設(shè)置為2“)
check_num?=?check_data
cam_num?=?cam_info
PATH_NOK?=?“NOK_record.csv“
found_nok?=?set()
capture?=?cv2.VideoCapture(0?cv2.CAP_DSHOW)
def?main():
????while?True:
????????ret?frame?=?capture.read()??#?從攝像頭獲取每一幀
????????frame_gray?=?cv2.cvtColor(frame?cv2.COLOR_BGR2GRAY)??#?對幀進(jìn)行灰度化
????????ret1?mask?=?cv2.threshold(frame_gray?175?255?cv2.THRESH_BINARY)??#?對灰度化之后的幀進(jìn)行二值化
????????mask_inv?=?cv2.bitwise_not(mask)??#?對二值化后的圖像取反,直接生成黑白頁面
????????barcodes?=?pyzbar.decode(mask_inv)??#?對每一幀進(jìn)行解碼
????????for?barcode?in?barcodes:
????????????barcode_data?=?barcode.data.decode(“utf-8“)
????????????if?len(barcode_data)?!=?int(check_num):
????????????????#?print(f“錯誤數(shù)據(jù)**bad_data**:\t{barcode_data}\t字符長度為:{len(barcode_data)}“)
????????????????#?print_color_text(color_error?f“錯誤數(shù)據(jù)**bad_data**:\t{barcode_data}\t字符長度為:{len(barcode_data)}“)
????????????????bad_data?=?barcode_data
????????????????#?winsound.Beep(freq?duration)
????????????????if?bad_data?not?in?found_nok:
????????????????????with?open(PATH_NOK?“a+“)?as?f:
????????????????????????csv_write?=?csv.writer(f)
????????????????????????date?=?[bad_data?time.strftime(“%Y-%m-%d?%H:%M:%S“?time.localtime())?“長度“?len(barcode_data)]
????????????????????????csv_write.writerow(date)
????????????????????????print_color_text(color_error?f“錯誤數(shù)據(jù)**bad_data**:\t{barcode_data}\t字符長度為:{len(barcode_data)}該數(shù)據(jù)已加入錯誤記錄“)
????????????????????found_nok.add(bad_data)
?
- 上一篇:python員工管理器
- 下一篇:圖片分類,圖像識別,目標(biāo)檢測
評論
共有 條評論