2017-07-28 76 views
0

我想要檢測眼睛,但我有另一個問題。我無法顯示相機框。問題可能很明顯,但我是新手。下面我的代碼的一部分:我無法在OpenCV中捕捉攝像頭中的幀

這裏是我的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; 
} 

它不顯示相機框,它只顯示一個空白的灰色窗口。 問題是什麼?

+3

'imshow'沒有'waitKey'。閱讀[文檔](http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html?highlight=imshow#imshow)! 「這個函數後面應該有一個waitKey函數,它在指定的毫秒內顯示圖像,否則它不會顯示圖像。」 –

+0

感謝您的回答。你說得對,我忘了waitKey()函數。但我還有其他問題。因爲,我有額外的線,我沒有把我的問題。這些行是'webcam.set(CV_CAP_PROP_FRAME_WIDTH,800);'和'webcam.set(CV_CAP_PROP_FRAME_HEIGHT,600);'我編輯了這個問題。當我刪除這些行並在我的代碼中放置waitKey()函數時,它可以工作。此外,它是有趣的,但如果(寬度,高度)=(320,240),這些行是沒有問題的,代碼的作品。其實,我不明白爲什麼。 – Alperen

+0

你是說當你將框架尺寸設置爲800x600時,你只能得到空框架?什麼樣的相機? –

回答

-2
  1. 請檢查您的相機ID 1. 如果你只有一個連接的攝像機,那麼請更換攝像機ID 0而不是1

cv2.VideoCapture(1)cv2.VideoCapture(0)

  • 添加waitKey()行 在循環結束時添加此行
  • `

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

    ` 也許檢查一下waitKey()應該是需要你。 謝謝。

    +0

    請修改您的答案。刪除「cv2」。也許waitkey(10)不waitkey(0) – sturkmen

    +0

    這應該是什麼語言?到目前爲止,它看起來像Python和C++的一些奇怪的混亂,這不會在任何工作。 –

    +0

    這是python腳本。 – drimyus