C++ C++;OpenCV会进行人脸识别,直到移除摄像头
我正在用OpenCV做一些带有摄像头的人脸识别的东西。问题是,只要没有安装摄像头,我就会得到一个例外。我一开始就用这个代码处理了这个问题:C++ C++;OpenCV会进行人脸识别,直到移除摄像头,c++,opencv,C++,Opencv,我正在用OpenCV做一些带有摄像头的人脸识别的东西。问题是,只要没有安装摄像头,我就会得到一个例外。我一开始就用这个代码处理了这个问题: if (!realTime.isOpened()) { cout << "No webcam installed!" << endl; system("pause"); return 0; } if(!realTime.isOpened()) { 无法检查read的返回值(无论如何都应该这样做)。从: 该方
if (!realTime.isOpened())
{
cout << "No webcam installed!" << endl;
system("pause");
return 0;
}
if(!realTime.isOpened())
{
无法检查read
的返回值(无论如何都应该这样做)。从:
该方法/函数在一次调用中结合了VideoCapture::grab()和VideoCapture::retrieve()。这是读取视频文件或从解码中捕获数据的最方便方法,并返回刚刚捕获的帧。如果没有捕获帧(相机已断开连接,或视频文件中没有更多帧),方法返回false,函数返回空图像(使用cv::Mat,使用Mat::empty()测试它)
因此:
bool valid\u frame=false;
while(true)
{
有效_帧=实时读取(视频流);
如果(!有效的_帧)
{
std::cout检查read
的返回值(无论如何都应该这样做)。从:
该方法/函数在一次调用中结合了VideoCapture::grab()和VideoCapture::retrieve()。这是读取视频文件或从解码中捕获数据的最方便方法,并返回刚刚捕获的帧。如果没有捕获帧(相机已断开连接,或视频文件中没有更多帧),方法返回false,函数返回空图像(使用cv::Mat,使用Mat::empty()测试它)
因此:
bool valid\u frame=false;
while(true)
{
有效_帧=实时读取(视频流);
如果(!有效的_帧)
{
std::cout“但现在我希望在网络摄像头关闭时程序立即停止。”如果OpenCV引发异常,未经处理的异常将立即停止程序。但是程序崩溃,当我构建并执行它时,它会告诉我FaceRecog.exe不再工作。我想防止这种情况。为什么不捕获异常?“但现在,我希望每当网络摄像头关闭时,程序立即停止。”如果OpenCV引发异常,未经处理的异常将立即停止您的程序。但是程序崩溃,当我构建并执行它时,它会告诉我FaceRecog.exe不再工作。我想防止这种情况。为什么不捕获异常?
namedWindow("Face Detection", WINDOW_KEEPRATIO);
string trained_classifier_location = "C:/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml";
CascadeClassifier faceDetector;
faceDetector.load(trained_classifier_location);
vector<Rect> faces;
while (true)
{
realTime.read(videoStream);
faceDetector.detectMultiScale(videoStream, faces, 1.1, 4, CASCADE_SCALE_IMAGE, Size(20, 20));
for (int i = 0; i < faces.size(); i++)
{
Mat faceROI = videoStream(faces[i]);
int x = faces[i].x;
int y = faces[i].y;
int h = y + faces[i].height;
int w = x + faces[i].width;
rectangle(videoStream, Point(x, y), Point(w, h), Scalar(255, 0, 255), 2, 8, 0);
}
imshow("Face Detection", videoStream);
if (waitKey(10) == 27)
{
break;
}
}
bool valid_frame = false;
while (true)
{
valid_frame = realTime.read(videoStream);
if(!valid_frame)
{
std::cout << "camera disconnected, or no more frames in video file";
break;
}
...
}