Python 多摄像机检测中的线程异常

Python 多摄像机检测中的线程异常,python,keras,python-multithreading,Python,Keras,Python Multithreading,我有几个摄像头在不同的线程上工作,我试图在每个线程上开始检测。我在main中定义模型并将其传递给线程 可用于一个摄影机,但一旦第二个摄影机线程启动,它就会抛出以下错误: 线程thread-2中的异常:回溯(最近一次调用last):文件 “C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\threading.py”, 第916行,输入自举 self.run()文件“C:\Users\Admin\AppData\Local\Progr

我有几个摄像头在不同的线程上工作,我试图在每个线程上开始检测。我在main中定义模型并将其传递给线程

可用于一个摄影机,但一旦第二个摄影机线程启动,它就会抛出以下错误:

线程thread-2中的异常:回溯(最近一次调用last):文件 “C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\threading.py”, 第916行,输入自举 self.run()文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\threading.py”, 第864行,运行中 self.\u target(*self.\u args,**self.\u kwargs)文件“D:\detect\testing\cam.py”,第77行,视频读取 (locs,preds)=检测和预测(帧,人网,帽子网)文件“D:\detect\testing\cam.py”,第115行,在 检测和预测 person=cv2.cvt颜色(person,cv2.COLOR\u BGR2RGB)cv2.error:OpenCV(4.3.0) C:\projects\opencv python\opencv\modules\imgproc\src\color.cpp:182: 错误:(-215:断言失败)_函数中的src.empty() “cv::cvtColor”

线程thread-1中的异常:回溯(最近一次调用最后一次):
文件 “C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\threading.py”, 第916行,输入自举 self.run()文件“C:\Users\Admin\AppData\Local\Programs\Python\Python36\lib\threading.py”, 第864行,运行中 self.\u target(*self.\u args,**self.\u kwargs)文件“D:\detect\testing\cam.py”,第77行,视频读取 (locs,preds)=检测和预测(帧,人网,帽子网)文件“D:\detect\testing\cam.py”,第115行,在 检测和预测 person=cv2.cvt颜色(person,cv2.COLOR\u BGR2RGB)cv2.error:OpenCV(4.3.0) C:\projects\opencv python\opencv\modules\imgproc\src\color.cpp:182: 错误:(-215:断言失败)_函数中的src.empty() “cv::cvtColor”

我试过了

if frame is not None:
 #detection code
else:
 print('empty frame')
仍然抛出相同的错误, 我错过什么了吗

代码:


我解决它。只需使用多处理而不是线程

请发布您的代码片段进行分析,仅使用回溯无法完成任何操作
def detect_and_predict(frame, person_net, hat_net):
    (h, w) = frame.shape[:2]
    blob = cv2.dnn.blobFromImage(frame, 1.0, (512, 512),(104.0, 177.0, 123.0))
    person_net.setInput(blob)
    detections = person_net.forward()
    persons = []
    locs = [] 
    preds = []

    for i in range(0, detections.shape[2]):
        confidence = detections[0, 0, i, 2]
        if confidence > 0.6:
            box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
            (startX, startY, endX, endY) = box.astype("int")

            (startX, startY) = (max(0, startX), max(0, startY))
            (endX, endY) = (min(w - 1, endX), min(h - 1, endY))

            person = frame[startY:endY, startX:endX]
            person = cv2.cvtColor(person, cv2.COLOR_BGR2RGB)
            person = cv2.resize(person, (224, 224))
            
            person = img_to_array(person)
            person = preprocess_input(person)
            
            persons.append(person)
            locs.append((startX, startY, endX, endY))
    if len(persons) > 0:
        persons = np.array(persons, dtype="float32")
        preds = hat_net.predict(persons, batch_size=32)
    return (locs, preds)