如何在 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 2013
、opencv-3.3.1-vc14
和Microsoft 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 2019 中调试 nestjs 程序?