3
我目前正在進行實時臉部評估,並試圖將我的計算機相機的FPS設置爲每秒1幀,然後每秒只調用一次級聯函數。 (目前使用While(true)循環)這是由於我的GPU的限制。OpenCV將FPS設置爲相機不工作
我曾嘗試用
VideoCapture cap(0);
cap.set(CV_CAP_PROP_FPS, 1);
namedWindow("webcam",CV_WINDOW_AUTOSIZE);
設置相機的FPS,但它不工作。相機仍以相對較高的FPS進行處理。
對於級聯功能調用,我這樣做如下:
while (true){
cap >> frame;
vector<Rect> faces;
face_cascade.detectMultiScale(frame, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30));
// Draw circles on the detected faces
for(int i = 0; i < faces.size(); i++)
{
Point center(faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5);
cout<<"Face location: "<<faces[i].x<<","<<faces[i].x + faces[i].width<<","<<faces[i].y<<","<<faces[i].y + faces[i].height;
ellipse(frame, center, Size(faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);
}
waitKey(30);
if (!frame.data){
cerr << "Cannot acquire frame from the webcam " << endl;
break;
}
imshow("webcam", frame);
}
我需要的相機去只有每秒1幀,然後通過調用函數級聯每秒一次。
編輯:我曾嘗試用
int FPS = cap.get(CV_CAP_PROP_FPS);
它確實表明,FPS目前處於1顯示相機的FPS,但似乎攝像機在一個相對較高的幀率還在動。
謝謝! WaitKey確實爲我工作!我已經嘗試了另一種方法,通過在循環中調用C++「Sleep」函數,但我相信這並不是很有效。我無法確定相機的問題(很可能是因爲我的電腦)。 – Piiinkyy
cv :: waitKey必須工作。否則,你的代碼有問題或鏈接到OpenCV或其他我知道的東西。 –