我无法在OpenCV中从相机捕获帧

时间:2017-07-28 15:31:25

标签: c++ opencv visual-c++

我试图检测眼睛,但我有另一个问题。我无法显示相机框架。问题很明显,但我是新手。我的代码的一部分如下:

这是我的EyeDetection.h

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/objdetect/objdetect.hpp>

using namespace cv;

class EyeDetection {
private:
    CascadeClassifier eye_cascade, eyepair_cascade;
public:
    EyeDetection();
    void detect();
}; 

这是我的EyeDetection.cpp

#include "EyeDetection.h"

EyeDetection::EyeDetection() {
    eye_cascade.load("haarcascade_eye.xml");
    eyepair_cascade.load("haarcascade_mcs_eyepair_big.xml");
}

void EyeDetection::detect()
{
    VideoCapture webcam(1); //Webcam number is 1
    if (eyepair_cascade.empty() || eye_cascade.empty() || !(webcam).isOpened())
        return;

    webcam.set(CV_CAP_PROP_FRAME_WIDTH, 800);
    webcam.set(CV_CAP_PROP_FRAME_HEIGHT, 600);

    Mat frame;
    while (1) {
        webcam >> frame;
        if (frame.empty()) continue;
        imshow("asad", frame);
    }
}

这是我的Source.cpp(主要):

#include "EyeDetection.h"

using namespace cv;

int main(int argc, char** argv)
{
    EyeDetection e = EyeDetection();
    e.detect();
    return 0;
}

它没有显示相机框,它只显示一个空白的灰色窗口。 有什么问题?

1 个答案:

答案 0 :(得分:-2)

  1. 请检查您的相机ID 1。 如果您只有一台连接的相机,请更换相机ID 0而不是1。
  2. cv2.VideoCapture(1)cv2.VideoCapture(0)

    1. 添加waitKey()行 在循环结束处添加此行
    2. `

      while (1) {
              webcam >> frame;
              if (frame.empty()) continue;
              imshow("asad", frame);
              cv2.waitkey(0)
          }
      

      ` 也许要检查一下你应该需要waitKey()。 感谢。