from pyzbar import pyzbar
import csv
import ast
found = set()
PATH = “test.csv”
import cv2
import time
import multiprocessing as mp
def image_put(q, name, pwd, ip, channel=1):
cap = cv2.VideoCapture(“rtsp://%s:%s@%s//Streaming/Channels/%d” % (name, pwd, ip, channel))
if cap.isOpened():
print(‘HIKVISION’)
else:
cap = cv2.VideoCapture(“rtsp://%s:%s@%s/cam/realmonitor?channel=%d&subtype=0” % (name, pwd, ip, channel))
print(‘DaHua’)
while True:
q.put(cap.read()[1])
q.get() if q.qsize() > 1 else time.sleep(0.01)
def image_get(q, window_name):
cv2.namedWindow(window_name, flags=cv2.WINDOW_FREERATIO)
i = 0
while True:
img = q.get()
test = pyzbar.decode(img,symbols=[pyzbar.ZBarSymbol.QRCODE])
for tests in test:
testdate = tests.data.decode(‘utf-8’)
if testdate not in found:
with open(PATH, 'a+') as f:
csv_write = csv.writer(f)
date = [testdate]
csv_write.writerow(date)
found.add(testdate)
user_dict = ast.literal_eval(testdate)
i += 1
print("产品名称:", user_dict["part_name"])
print("箱号:",user_dict["box_no"])
print("型号:",user_dict["model"])
print("批次:",user_dict["lot_no"])
print("总扫描箱数:",i)
cv2.imshow(window_name,img )
cv2.waitKey(1)
def run_multi_camera():
# user_name, user_pwd = “admin”, “password”
user_name, user_pwd = “admin”, “gzsrc0851”
camera_ip_l = [
“192.168.1.197”, # ipv4
# “192.168.1.220”,
#"[fe80::3aaf:29ff:fed3:d260]", # ipv6
# 把你的摄像头的地址放到这里,如果是ipv6,那么需要加一个中括号。
]
mp.set_start_method(method='spawn') # init
queues = [mp.Queue(maxsize=4) for _ in camera_ip_l]
processes = []
for queue, camera_ip in zip(queues, camera_ip_l):
processes.append(mp.Process(target=image_put, args=(queue, user_name, user_pwd, camera_ip)))
processes.append(mp.Process(target=image_get, args=(queue, camera_ip)))
for process in processes:
process.daemon = True
process.start()
for process in processes:
process.join()
if name == ‘main’:
run_multi_camera()