python - 使用IP摄像机从实时流中删除捕获的重复图像

标签 python opencv

我正在完美地从摄像机的实时流中捕获图像,但是在一个人的几秒钟内捕获的图像数量。所以我只需要一个人的完美形象...怎么会

cap = cv2.VideoCapture("rtsp://admin:admin@192.168.0.7:554/cam/realmonitor?channel=1&subtype=0")
face_cascade = cv2.CascadeClassifier('E://final_facematch//facematch-master//haarcascade_frontalface_default.xml')
cap.set(3,640) # set Width
cap.set(4,480) # set Height
def getfilename():
    x = datetime.datetime.now()
    filename=x.strftime("%d")+x.strftime("%m")+x.strftime("%Y")+x.strftime("%H")+x.strftime("%M")+x.strftime("%S")+""+str(random.randint(1,300))+".jpg"
    return filename
while True:
    ret, gray = cap.read()
    faces = face_cascade.detectMultiScale(
         gray,
         scaleFactor=1.3,
         minNeighbors=15,      
         minSize=(65, 65))
    for (x,y,w,h) in faces:
        cv2.rectangle(gray,(x,y),(x+w,y+h),(255,0,0),2)
        roi_color = gray[y:y+h, x:x+w]
        face_cascade = 
        cv2.imwrite("E:/python_pro/dataset/"+getfilename(),roi_color)
cv2.imshow('video', gray)    
k = cv2.waitKey(1) & 0xff

最佳答案

我不知道一张完美的图像,但是您可以限制为一张图像。捕获后等待几秒钟,以使帧的屏幕截图不会淹没您的系统。

您可以放置​​一个start_time(在捕获帧或使用imwrite后初始化)和一个end_time(在循环中保持更改),然后检查

if end_time - start_time > 30

即等待30秒,然后再恢复检测,无论您要达到什么目的。

如果您可以将代码放在这里,我也许可以提供更好的帮助。

看到代码后,编辑以上答案:
start_time = 10
while True:
    end_time = time.time()
    ret, gray = cap.read()
    if end_time - start_time > 30:
        faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=15, minSize=(65, 65))
        for (x, y, w, h) in faces:
            cv2.rectangle(gray, (x, y), (x + w, y + h), (255, 0, 0), 2)
            roi_color = gray[y:y + h, x:x + w]
            face_cascade = cv2.imwrite("E:/python_pro/dataset/" + getfilename(), roi_color)
            start_time = time.time()

    cv2.imshow('video', gray)
    k = cv2.waitKey(1) & 0xff

该程序在检测到脸部时单击图片后,将等待30秒。

关于python - 使用IP摄像机从实时流中删除捕获的重复图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54288003/

相关文章:

c++ - 如何在OpenCV中单击鼠标以在图像上绘制矩形?

java - OpenCV Java RGB还是HSV?

python - python中的面向方面的技术?

python - 使用 for 循环改变 python 数组中的元素

Python:UTF-8 德语特殊字符

python - Mac OS 10.6.8 上的 SciPy 和 NumPy

c - 在 opencv 中使用线程

c++ - 为什么 cv::format 没有给我预期的结果?

matlab - 基础矩阵的投影矩阵

Python - Firefox headless (headless)