贴一段实测有效的代码,我的实际情况是定时截取摄像头的帧节图像,进行实时检测,并做相应的逻辑判断。**注意:**一次检测完,如果关闭会话,到达下一个时间节点的时候会报错(尝试去调用一个已经关闭的会话);如果不关闭会话,也会报错。所以,在每次检测结束后,选择去清空一次会话。(具体应该和会话的创建机制有关)
def shot_img():
yolo = YOLO()
global num
success, frame = cameraCapture.read()
path = "D://pythonr/" #将截取的帧存入该目录下
cv2.imwrite( path + str(num) + '.jpg', frame)
image = Image.open(path + str(num) + '.jpg') #获取存储的图片信息
r_image,label = yolo.detect_image(image) #调用训练好的模型检测
#yolo.close_session()
yolo.clear_session() #自己写一个清空会话的方法
r_image.show()
print(num)
num += 1
if num==10:
cameraCapture.release()
cv2.destroyAllWindows()
sys.exit()
timer = threading.Timer(100, shot_img)
timer.start()
if __name__ == '__main__':
num=0
cameraCapture = cv2.VideoCapture(0)
timer = threading.Timer(20,shot_img)
timer.start()