作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经尝试了我在网上找到的一切,但没有任何东西能让这个或类似的程序在我的电脑上运行。我已经尝试将绝对路径 (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'
.
关于c++ - 每次使用 harr cascades 进行人脸识别都会失败 b/c 程序无法加载 cascades,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45848362/
我是一名优秀的程序员,十分优秀!