Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;OpenCV会进行人脸识别,直到移除摄像头_C++_Opencv - Fatal编程技术网

C++ C++;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的返回值(无论如何都应该这样做)。从: 该方

我正在用OpenCV做一些带有摄像头的人脸识别的东西。问题是,只要没有安装摄像头,我就会得到一个例外。我一开始就用这个代码处理了这个问题:

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;
    }
    ...
}