我想要檢測眼睛,但我有另一個問題。我無法顯示相機框。問題可能很明顯,但我是新手。下面我的代碼的一部分:我無法在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;
}
它不顯示相機框,它只顯示一個空白的灰色窗口。 問題是什麼?
'imshow'沒有'waitKey'。閱讀[文檔](http://docs.opencv.org/2.4/modules/highgui/doc/user_interface.html?highlight=imshow#imshow)! 「這個函數後面應該有一個waitKey函數,它在指定的毫秒內顯示圖像,否則它不會顯示圖像。」 –
感謝您的回答。你說得對,我忘了waitKey()函數。但我還有其他問題。因爲,我有額外的線,我沒有把我的問題。這些行是'webcam.set(CV_CAP_PROP_FRAME_WIDTH,800);'和'webcam.set(CV_CAP_PROP_FRAME_HEIGHT,600);'我編輯了這個問題。當我刪除這些行並在我的代碼中放置waitKey()函數時,它可以工作。此外,它是有趣的,但如果(寬度,高度)=(320,240),這些行是沒有問題的,代碼的作品。其實,我不明白爲什麼。 – Alperen
你是說當你將框架尺寸設置爲800x600時,你只能得到空框架?什麼樣的相機? –