报错

错误代码
if __name__ == "__main__":
cap0 = cv2.VideoCapture(0)
cap1 = cv2.VideoCapture(1)
cap2 = cv2.VideoCapture(2)
cap0_thread = threading.Thread(target=Aptag_detect, args=[cap0])
cap1_thread = threading.Thread(target=ball_detect, args=[cap1, "red"])
cap2_thread = threading.Thread(target=wall_detect, args=[cap2, "blue"])
while 1:
start = time.time()
cap0_thread.run()
cap1_thread.run()
cap2_thread.run()
end = time.time()
print("run time:", start-end)
解决方法:在while 1的代码中,在调用线程.run()的时候必须将thread定义也放在其中,使得在每次调用的时候线程都能获得定义。
正确代码
if __name__ == "__main__":
cap0 = cv2.VideoCapture(0)
cap1 = cv2.VideoCapture(1)
cap2 = cv2.VideoCapture(2)
while 1:
cap0_thread = threading.Thread(target=Aptag_detect, args=[cap0])
cap1_thread = threading.Thread(target=ball_detect, args=[cap1, "red"])
cap2_thread = threading.Thread(target=wall_detect, args=[cap2, "blue"])
start = time.time()
cap0_thread.run()
cap1_thread.run()
cap2_thread.run()
end = time.time()
print("run time:", start-end)
if cv2.waitKey(60) &0xFF ==ord('q'):
break