繁体   English   中英

如何在Django中修复冻结的cv2.imshow(来自opencv)

[英]How to fix the freezing cv2.imshow(from opencv) in django

我想做的是,当用户单击按钮时,django将运行python代码并检测到人。 我从imutils.video使用VideoStream,但它只是弹出窗口并冻结。 当我测试人脸识别时,它非常有效,但是一旦我将相同的代码放入django中。 我的意思是它仍然可以检测到人,但是只能检测到第一帧,然后将冻结。

VideoStream来自imutils.video,而cv2.imshow来自opencv。

这是视频流的代码。 即使我单独运行视频流(没有面部识别代码),它仍然冻结。

def detect(request):
    vs = VideoStream("http://192.168.1.109:8080/video").start()
    while True:
        frame = vs.read()
        cv2.imshow("Frame", frame)
        key = cv2.waitKey(1) & 0xFF

        if key == ord("q") :
            break
        else:
            time.sleep(30)
            break
    cv2.destroyAllWindows()
    vs.stop()
    return render(request,"attendance/detect.html")

如果无法解决,那么有什么建议可以做同样的事情? 谢谢

尝试这个:

while True:
    frame = vs.read()
    cv2.imshow("Frame", frame)
    if cv2.waitKey(1) & 0xFF == ord("q"):
       break
cv2.destroyAllWindows()
vs.stop()

老实说我真的不明白你想做什么。 您想每30秒等待一次,然后再拍张照片吗? 您的代码似乎在条件条件和其他条件条件下都在循环中中断

编辑:30秒流

2选项

1)对于30秒的流,您需要计算fps并在达到fps * 30循环后中断。

2)创建标志变量和超时功能

flag = 0 

def timeout(sleep):
    time.sleep(sleep)
    flag = 1

threading.Thread(target = timetout, args=(30,)).start()


# in your loop then break when 

if flag == 1:
    break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM