【问题标题】:OpenCV Web Cam Video Capture issueOpenCV 网络摄像头视频捕获问题
【发布时间】:2017-12-20 23:27:33
【问题描述】:

我也是 OpenCV 和 Python 的新手。 我在我的代码中遇到了一些错误,我已经尽力了,但是......我希望有人能帮助我。我希望当我运行代码时,它应该每秒捕获 10-15 帧……以下是我遇到的错误……谁能帮我修改 代码...

import cv2
import time
import sys
import numpy as np

if __name__ == '__main__':
    faceCascade = cv2.CascadeClassifier('C:\\Users\\Mudit\\Desktop\\Thesis\\CNN-master\\haarcascade_frontalface_default')
    faceNeighborsMax = 10
    neighborStep = 1

    # Start default camera
    video = cv2.VideoCapture(0);

    # Number of frames to capture
    num_frames = 10;
    print("Capturing {0} frames".format(num_frames))

    # Start time
    start = time.time()

    # Grab a few frames
    for i in range(0, num_frames):
        ret, frame = video.read()

    frameGray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    for neigh in range(1, faceNeighborsMax, neighborStep):
        faces = faceCascade.detectMultiScale(frameGray, 1.2, neigh)
        frameClone = np.copy(frame)

        # Display the image
        for (x, y, w, h) in faces:
            cv2.rectangle(frameClone, (x, y), (x + w, y + h), (255, 0, 0), 2)

        cv2.putText(frameClone, "# Neighbors = {}".format(neigh), (10, 50),
                    cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 4)
        cv2.imshow('Face Detection', frameClone)
        if cv2.waitKey(500) & 0xFF == 27:
            cv2.destroyAllWindows()
            sys.exit()

    # End time
    end = time.time()

    # Time elapsed
    seconds = end - start
    print("Time taken : {0} seconds".format(seconds))

    # Calculate frames per second
    fps = num_frames / seconds;
    print("Estimated frames per second : {0}".format(fps))

    # Release video
    video.release()

错误:

Traceback (most recent call last):   File "C:/Users/Mudit/PycharmProjects/CNN/findframerateofacamera/webcam.py", line 28, in <module>
    faces = faceCascade.detectMultiScale(frameGray, 1.2, neigh) cv2.error: C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1698: error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale

【问题讨论】:

  • 看起来像是 C++ 代码中的一种断言失败。您是否向 OpenCV 传递了不应为空的空值?
  • No..Error..Line 28..somewhere for neigh in range(1, faceNeighborsMax, neighborStep): faces = faceCascade.detectMultiScale(frameGray, 1.2, neigh) frameClone = np.复制(帧)
  • 尝试在 'C:\\Users\\Mudit\\Desktop\\Thesis\\CNN-master\\haarcascade_frontalface_default' 之后添加 .xml?

标签: python python-3.x opencv opencv3.0


【解决方案1】:

自从

frameGray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

不会导致断言,我认为图像捕获工作正常。你可以添加

cv2.imshow('Gray', frameGray)

验证灰度图不为空

下一个嫌疑人是级联分类器faceCascade。请检查路径和文件名是否正确以及是否已正确加载。

【讨论】:

    猜你喜欢
    • 2014-06-05
    • 1970-01-01
    • 2015-08-18
    • 2019-02-19
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多