gpt4 book ai didi

c++ - 每次使用 harr cascades 进行人脸识别都会失败 b/c 程序无法加载 cascades

转载 作者:行者123 更新时间:2023-11-28 01:44:16 26 4
gpt4 key购买 nike

我已经尝试了我在网上找到的一切,但没有任何东西能让这个或类似的程序在我的电脑上运行。我已经尝试将绝对路径 (C:\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml) 直接放入代码中。此外,我尝试将 xml 文件复制到我的程序所在的文件夹中,我还尝试在不同的平台和配置中运行代码(当然匹配版本),但仍然对我不起作用。我也尝试过 visual studio 2015、2017,打开 CV 3.2 和 3.3 但还是没有成功请帮我找出我做错了什么,谢谢。这是我尝试过的代码之一。`程序在 if 语句中崩溃,但我不知道为什么。

在这里输入代码`

#include "opencv2/objdetect/objdetect.hpp" 
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

// Function Headers
void detectAndDisplay(Mat frame);

// Global variables
string face_cascade_name =
"C:\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml";
CascadeClassifier face_cascade;

// Function main
int main(void)
{
// Load the cascade

if (!face_cascade.load(face_cascade_name)) {
printf("--(!)Error on cascade loading\n");
return (-1);
}

// Read the image file
Mat frame = imread("preview-obama-10.jpg");

// Apply the classifier to the frame
if (!frame.empty())
detectAndDisplay(frame);
waitKey(0);
return 0;
}

// Function detectAndDisplay
void detectAndDisplay(Mat frame)
{
std::vector<Rect> faces;
Mat frame_gray;

cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
equalizeHist(frame_gray, frame_gray);

// Detect faces
face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 |
CASCADE_SCALE_IMAGE, Size(30, 30));

for (int ic = 0; ic < faces.size(); ic++) // Iterate through all current
elements (detected faces)
{
Point pt1(faces[ic].x, faces[ic].y); // Display detected faces on
main window - live stream from camera
Point pt2((faces[ic].x + faces[ic].height), (faces[ic].y +
faces[ic].width));
rectangle(frame, pt1, pt2, Scalar(0, 255, 0), 2, 8, 0);
}

imshow("original", frame);
}

最佳答案

Please help me find what I am doing wrong ...

转义出现在字符串文字中的\:\\!

这个

 string face_cascade_name = 
"C:\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml";

应该是

string face_cascade_name = 
"C:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml";
// ^ ^ ^ ^ ^

1

 string face_cascade_name = 
R"x(C:\opencv\sources\data\haarcascades\haarcascade_frontalface_alt2.xml)x";
// ^^^^ ^^

顺便说一句:编译器应该发出有关未知字符转义序列的警告,例如 '\o''\s''\d''\h'.


1)参见raw string literals

关于c++ - 每次使用 harr cascades 进行人脸识别都会失败 b/c 程序无法加载 cascades,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45848362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com