如何在 Microsoft Visual Studio 中加载 .xml 文件

Posted

技术标签:

【中文标题】如何在 Microsoft Visual Studio 中加载 .xml 文件【英文标题】:How to load .xml file in the Microsoft Visual Studio 【发布时间】:2017-11-27 08:35:05 【问题描述】:

对于我的项目,我使用Microsoft Visual Studio Ultimate 2013opencv-3.3.1-vc14Microsoft Window 10。在我的项目中,我将加载一个 .xml 文件,但它没有。

我的项目目录是:C:\Users\Muhammad_Anas_Hashmi\Desktop\Face_and_Eye_Detection。但是我要加载的 .xml 文件的目录是:C:\opencv\sources\data\haarcascades\haarcascade_eye.xml。 我用来加载文件的方式是:

CascadeClassifier eye_cascade;
eye_cascade.load("C:\\opencv\sources\data\haarcascades_cuda\haarcascade_eye.xml")

但我通过以下代码检查文件是否已加载。

if (!eye_cascade.load("C:\\opencv\sources\data\haarcascades_cuda\haarcascade_eye.xml"))
    
        printf("Error loading cascade file for eye\n");
    

每次它打印出消息。这意味着文件尚未加载。

但我项目的整个代码是:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<opencv\cv.h>
#include<opencv\highgui.h>
#include<opencv2\objdetect\objdetect.hpp>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\imgproc\imgproc.hpp>
#include<vector>

using namespace cv;
using namespace std;

int main()

    CascadeClassifier face_cascade, eye_cascade;
    if (!face_cascade.load("C:\\Users\Muhammad Anas Hashmi\Desktop\Face_and_Eye_Detection\haarcascade_frontalface_alt2.xml"))
    
        printf("Error loading cascade file for face\n");
        /*return 1;*/
    
    if (!eye_cascade.load("C:\\opencv\sources\data\haarcascades_cuda\haarcascade_eye.xml"))
    
        printf("Error loading cascade file for eye\n");
        /*return 1;*/
    
    VideoCapture capture(0);
    if (!capture.isOpened())
    
        printf("Error to initialize camera");
        return 1;
    
    Mat cap_img, gray_img;
    vector<Rect> faces, eyes;
    while (1)
    
        capture >> cap_img;
        waitKey(10);
        cvtColor(cap_img, gray_img, CV_BGR2GRAY);
        cv::equalizeHist(gray_img, gray_img);
        face_cascade.detectMultiScale(gray_img, faces, 1.1, 10, CV_HAAR_SCALE_IMAGE | CV_HAAR_DO_CANNY_PRUNING, cvSize(0, 0), cvSize(300, 300));
        for (int i = 0; i < faces.size(); i++)
        
            Point pt1(faces[i].x + faces[i].width, faces[i].y + faces[i].height);
            Point pt2(faces[i].x, faces[i].y);
            Mat faceROI = gray_img(faces[i]);
            eye_cascade.detectMultiScale(faceROI, eyes, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));
            for (size_t j = 0; j < eyes.size(); j++)
            
                Point center(faces[i].x + eyes[j].x + eyes[j].width * 0.5, faces[i].y + eyes[j].y + eyes[j].width * 0.5);
                int radius = cvRound((eyes[j].width + eyes[j].height)*0.25);
                circle(cap_img, center, radius, Scalar(255, 0, 0), 2, 8, 0);
            
            rectangle(cap_img, pt1, pt2, cvScalar(0, 255, 0), 2, 8, 0);
        
        imshow("Result", cap_img);
        waitKey(3);
        char c = waitKey(3);
        if (c == 27)
        
            break;
        
    
    system("PAUSE");
    return 0;

我在开始加载 .xml 文件时发现了问题。

【问题讨论】:

文件名中真的是单反斜杠 `\` 吗?如果是这样,那是你的问题。 【参考方案1】:

C:\\opencv\sources\data\haarcascades_cuda\haarcascade_eye.xm

您只转义了第一个反斜杠。你需要转义all

C:\\opencv\\sources\\data\\haarcascades_cuda\\haarcascade_eye.xml

【讨论】:

或无转义并使用来自 c++11 的原始字符串 R"(C:\blabla\blabla)"

以上是关于如何在 Microsoft Visual Studio 中加载 .xml 文件的主要内容,如果未能解决你的问题,请参考以下文章

微软发布了Visual Studio 2022 RC版,并将在11月8日发布正式版

如何下载microsoft visual studio

如何离线安装Visual Studio 2017

如何在 Microsoft Visual Studio 2019 中调试 nestjs 程序?

如何在 Microsoft Visual Studio 中加载 .xml 文件

如何在 Visual Studio 中启用 Microsoft 终端服务客户端控制?