python-3.x - 当我的脸移动得太快时,OpenCV 人脸检测会中断
问题描述
我编写了一个程序来实时检测面部并显示它们。问题是有时代码会中断,我会看到以下错误:
File "Removed_For_Privacy_Issues/main.py", line 24, in <module>
cv2.imshow('frame',detectedface)
cv2.error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
经过进一步测试,代码只有在视频突然变化时才会中断(比如当我快速移动我的脸或遮住相机时),有人知道为什么吗?
代码:
import numpy as np
import cv2
import PIL.Image
import PIL.ImageDraw
import time
cap = cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier('Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
time.sleep(3)
def FacialDetection(image):
boxes = face_cascade.detectMultiScale(image, 1.1, 3)
for (x, y, w, h) in boxes:
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 255, 0), 2)
return image
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
detectedface = FacialDetection(frame)
cv2.imshow('frame',detectedface)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()
解决方案
这将解决只是尝试,除了会做的工作
import numpy as np
import cv2
import PIL.Image
import PIL.ImageDraw
import time
cap = cv2.VideoCapture(0)
face_cascade = cv2.CascadeClassifier('Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml')
time.sleep(3)
def FacialDetection(image):
boxes = face_cascade.detectMultiScale(image, 1.1, 3)
for (x, y, w, h) in boxes:
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 255, 0), 2)
return image
while(cap.isOpened()):
try:
ret, frame = cap.read()
if ret==True:
detectedface = FacialDetection(frame)
cv2.imshow('frame',detectedface)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
except:
print("face not detected")
cap.release()
cv2.destroyAllWindows()
推荐阅读
- python - 我的列表理解中的“for”循环的语法有什么问题吗?
- android - 导航片段显示在导航架构组件jetpack中的上一个片段后面
- excel - 如何处理Excel工作表中的数据更改事件以刷新所有数据透视表?
- minecraft-forge - minecraft forge - 我如何获得一个实体并改变它的状态?
- powerpoint - 使用 pandoc 或其他东西从 slidy 转换为 powerpoint?
- python - 寻找始终高于平均水平的患者
- html - 它不会将我的网站及其模板呈现到 localhost1313
- c# - 单个字段值不会在缓存更新时更新
- corda - 如何用corda设计一个开放的市场
- python - 与多个 MultiPolygons 的形状相交,其中一定比例的 Multipolygons 相交?