Python 我一直通过OpenCV2检测人脸时出错 导入cv2,时间 第一帧=无 视频=cv2.VideoCapture(0,cv2.CAP_DSHOW) 尽管如此: 选中,frame=video.read() 灰色=cv2.CVT颜色(边框,cv2.COLOR\u BGR2GRAY) gray=cv2.高斯模糊(gray,(21,21),0) 如果第一个_帧为无: 第一帧=灰色 持续 diff=cv2.absdiff(第一帧,灰色) delta=cv2.阈值(diff,30255,cv2.阈值_二进制) 增量=cv2。扩张(增量,无,迭代次数=0) _,cnt,u=cv2.findContours(增量、cv2.RETR_树、cv2.CHAIN_近似值、简单值) 对于cnt中的contou: 如果cv2.contou面积(contou)

Python 我一直通过OpenCV2检测人脸时出错 导入cv2,时间 第一帧=无 视频=cv2.VideoCapture(0,cv2.CAP_DSHOW) 尽管如此: 选中,frame=video.read() 灰色=cv2.CVT颜色(边框,cv2.COLOR\u BGR2GRAY) gray=cv2.高斯模糊(gray,(21,21),0) 如果第一个_帧为无: 第一帧=灰色 持续 diff=cv2.absdiff(第一帧,灰色) delta=cv2.阈值(diff,30255,cv2.阈值_二进制) 增量=cv2。扩张(增量,无,迭代次数=0) _,cnt,u=cv2.findContours(增量、cv2.RETR_树、cv2.CHAIN_近似值、简单值) 对于cnt中的contou: 如果cv2.contou面积(contou),python,machine-learning,face-detection,cv2,Python,Machine Learning,Face Detection,Cv2,则使用此值更改cv2.threshold线 retval,delta=cv2.阈值(diff,30255,cv2.阈值二进制) 检查cv2.threshold函数及其返回值的说明 import cv2,time first_frame=None video = cv2.VideoCapture(0,cv2.CAP_DSHOW) while True: check,frame=video.read() gray=cv2.cvtColor(frame,cv2.COLOR_BG

则使用此值更改cv2.threshold线
retval,delta=cv2.阈值(diff,30255,cv2.阈值二进制)

检查cv2.threshold函数及其返回值的说明

import cv2,time

first_frame=None

video = cv2.VideoCapture(0,cv2.CAP_DSHOW)

while True:

    check,frame=video.read()
    gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    gray=cv2.GaussianBlur(gray,(21,21),0)
    if first_frame is None:
        first_frame=gray
        continue
    diff = cv2.absdiff(first_frame,gray)
    delta=cv2.threshold(diff,30,255,cv2.THRESH_BINARY)
    delta=cv2.dilate(delta,None,iterations=0)
    _,cnt,_=cv2.findContours(delta,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    for contou in cnt:
        if cv2.contourArea(contou)<1000:
            continue
        (x,y,w,h)=cv2.boundingRect(contou)
        cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),3)

    cv2.imshow('frame',frame)
    cv2.imshow('gray',gray)
    cv2.imshow('diffe',diff)
    cv2.imshow('delta', delta)
    key=cv2.waitKey(1)
    if key==ord('q'):
        break
video.release()

cv2.destroyAllWindows()
delta=cv2.dilate(delta,None,iterations=0) 
TypeError: Expected Ptr<cv::UMat> for argument '%s'