gpt4 book ai didi

c++ - OpenCV 级联分类器加载错误 iOS

转载 作者:行者123 更新时间:2023-11-28 05:15:09 25 4
gpt4 key购买 nike

目前,我正在尝试使用 OpenCV 级联分类器来检测我的 iOS 应用程序中的人脸。问题是当我加载分类器时,它失败了,因为“haarcascade_frontalface_alt.xml”的路径名不正确。

这是我的代码:

cv::String face_cascade_name = "haarcascade_frontalface_alt.xml";

void detectFaces(cv::Mat frame){

cv::CascadeClassifier face_cascade;
if (face_cascade.load(face_cascade_name)){
printf("Load complete");
}else{
printf("Load error");
}
std::vector<cv::Rect> faces;

std::vector<cv::Mat> rgbChannels(3);
cv::split(frame, rgbChannels); // Making the frame gray scale
cv::Mat frame_gray = rgbChannels[2];

face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE|CV_HAAR_FIND_BIGGEST_OBJECT, cv::Size(150,150));

if(faces.size()> 0){
printf("TRUE");
}

由于这是一个 iOS 项目,我不知道如何在框架中找到所需的 xml 文件的路径。将级联分类器加载到 iOS 项目中的正确方法是什么?或者,包含正确文件名以使其正确查看的正确方法是什么?

如有任何帮助,我们将不胜感激。

最佳答案

在 iOS 中,您需要在应用包中找到文件路径。像这样:

// get main app bundle
NSBundle * appBundle = [NSBundle mainBundle];

// constant file name
NSString * cascadeName = @"haarcascade_frontalface_alt";
NSString * cascadeType = @"xml";

// get file path in bundle
NSString * cascadePathInBundle = [appBundle pathForResource: cascadeName ofType: cascadeType];

// convert NSString to std::string
std::string cascadePath([cascadePathInBundle UTF8String]);

// load cascade
if (face_cascade.load(cascadePath)){
printf("Load complete");
}else{
printf("Load error");
}

关于c++ - OpenCV 级联分类器加载错误 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42818864/

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