Try---ing 2021-10-17 16:10 采纳率: 87.5%
浏览 90
已结题

人物识别python中使用opencv视频无法播放

在写opencv的视频人像识别时,打开的视频窗口不播放视频,只是停在视频的第一针对人物进行了识别,请教高人知道是什么问题导致的。
代码如下:

# 导入模块
import cv2 as cv
# 定义一个人脸检测函数
def face_demo(img):
    # 先将人脸图片转换位黑白照片
    gary = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    # 引入检测函数       通过更改分类器优化结果
    face_detect = cv.CascadeClassifier(
        'D:/python_opencv/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')
    # 检测函数设置方法                  灰度照片,缩放,检测次数,默认0,(最小尺寸),(最大尺寸)
    # face=face_detect.detectMultiScale(gary,1.1,3,0,(50,50),(200,200))
    # 一般通用
    face = face_detect.detectMultiScale(gary)
    for x, y, w, h in face:
        cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)
    cv.imshow('img', img)
# 读取摄像头
# cap=cv.VideoCapture(0)
# 读取视频文件
cap = cv.VideoCapture('sucai003.mp4')
# 等待    通过键盘控制结束
while True:
    flag,frame = cap.read()
#判断视频是否播放完毕
    if not flag:
        break
    face_demo(frame)
    if ord('b') == cv.waitKey(0):
        break
# 清理内存
cv.destroyAllWindows()
# 释放摄像头
cap.release()

显示的效果照片

img

这是参照B站

img


教学视频学习的
教程中也是这样写的但是人家的视频是可以播放的但我的不行

  • 写回答

1条回答 默认 最新

  • 桔子code 2021-10-18 00:21
    关注

    第28行 if ord('b') == cv.waitKey(0): waitKey入参0表示无限时长等待按键,这么写就要求每解析一帧数据就要按下b,程序才会继续下一帧,你可以把这个0改成20,等待20ms自动解析下一帧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月11日
  • 已采纳回答 4月3日
  • 创建了问题 10月17日

悬赏问题

  • ¥100 调查 Vitis AI 中验证 .xmodel 量化后的正确性
  • ¥30 codelite全屏时file、setting那一行消失了
  • ¥15 gazebo-rviz教程
  • ¥15 付费求做一个自助抢单插件
  • ¥15 bat批处理,关于数据复制问题
  • ¥50 同步两个不同结果的array中某些属性
  • ¥15 悬赏15远程操控解决问题
  • ¥15 CST复制的模型无法单独修改参数?
  • ¥15 前端页面想做个定时任务,但是使用requestAnimationFrame,setinterval和settimeout都不行
  • ¥15 根据以下文字信息,做EA模型图