c++ - iOS中Opencv人脸检测Cascade编译器报错

标签 c++ ios objective-c opencv tesseract

在我的 IOS 项目中我实现了一个 tesseract 示例,在这个示例中我需要集成 opencv。我用过this sample project ,它有默认的 tesseract 和 opencv。

但是我尝试使用下面的代码在这个项目中实现人脸检测,

 NSString* cascadePath = [[NSBundle mainBundle]
                             pathForResource:@"haarcascade_frontalface_alt"
                             ofType:@"xml"];
    faceDetector.load( [cascadePath UTF8String] );

但是我得到以下错误:

Undefined symbols for architecture armv7:
  "cv::CascadeClassifier::load(std::string const&)", referenced from:
      -[ViewController viewDidLoad] in ViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

现在在build设置中 -> C++ 编译器 -> 选择“默认编译器”。我尝试了此 link 中的编译器设置.如果我这样设置,“Tesseract”代码就会出错。

创建的 faceDetector 如下:

@interface ViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate>{
    UIImagePickerController *mediaPicker;
    UIImage *takenImage;
    UIImage *processedImage;
    cv::CascadeClassifier faceDetector;
}

我该如何解决这个问题?

最佳答案

删除您现有的“opencv2.framework”(与您的 xcode 项目一起出现的那个)

将其替换为 official one

注意:它不包含“armv7s”的符号。它仍然可以在模拟器和实际设备上运行。

关于c++ - iOS中Opencv人脸检测Cascade编译器报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24822949/

相关文章:

objective-c - 何时向托管对象添加类别以及何时使用 transient 属性?

c++ - 实例化具有回调函数类型的模板

ios - Xcode下载信息

iphone - 是否可以在没有Windows或Linux且没有其中一种设备的情况下针对iPhone/iPod Touch进行开发?

objective-c - 让代码检查文本框中的文本是否与 NSArray 中的任何字符串匹配

objective-c - 另一个 EXC_BAD_ACCESS

ios - RubyMotion 重新加载 UITableView 的部分

c++ - WChars、编码、标准和可移植性

c++ - 奇怪的功能

c++ - 链接器如何在使用不同编译器编译的动态库中选择动态库