OpenCV学习系列(一) Mac下OpenCV + xcode人脸检测实现


[-= 博客目录 =-]


1-学习目标

1.1-本章介绍

如题,实现简单人脸检测,及Undefined symbols for architecture x86_64问题相关解决方案。

1.2-实践内容

  1. 环境配置
  2. 解决Undefined symbols for architecture x86_64问题
  3. 测试代码

1.3-相关说明

Mac+xcode+OpenCV外部库导入

返回目录

2-学习目标

2.1-环境配置

  • searchpath设置:

    如图,具体怎么找可以参见(零)

  • 导入外部库

    如图(其实多了,但是为了方便就一起导入了)

返回目录

2.2-解决Undefined symbols for architecture x86_64问题

在完成配置后,进行build,弹出错误:

Undefined symbols for architecture x86_64
……(具体内容略)
clang: error: linker command failed with exit code 1

这个是个经典问题,主要的原因是在自己的电脑上编译其他环境下的代码时会遇到的(如果之前没有配置好),我在网上搜到了很多解决办法,整理了一套具体的排除故障方法:

  1. 检查Link Binary With Libraries是否忘记添加系统某些库文件或自定义类文件:

    图片

    如果缺失就点“+”号添加,如果找不到就点击“add other”,如果在隐藏的usr中就用command+shift+G键直接进取,具体操作可以参考(零)。
  2. 检查工程文件路径是否正确:



    没有设置就赶紧设置
  3. 检查Link Binary With Libraries添加的库、类是否有重名,有重名就去掉,重新改名导入。
  4. 检查Build settings->Linking->Other Linker Flags选项

    如果导入的是第三方库,则需要将属性设置为-all_load 或者 -ObjC
  5. 检查”Build Settings”->”Enable Bitcode”设置为NO ,因为有些SDK不支持Bitcode,这个问题比较少见。

以上是网上的方法,我操作过后……

完!全!没!用!

在我抓耳挠腮了一个下午之后,祭出排除法,一步一步的试错,终于在睡觉前灵光一闪,找到了问题所在……

1是我之前导入的库,不行,但是如果导入2就可以,我看了看图标发现2的右下角有个小箭头,我想原因应该是1是没有编译好的库,导入之后xcode才会报找不到库的错,因为根本没链接上。

返回目录

2.3-测试代码

参考网上的代码基于Opencv的人脸检测及识别,稍微有些改动

#include <iostream>
#include <string> #include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/imgproc/imgproc.hpp> using namespace cv;
using namespace std;
string xmlPath="/Users/mac/Study/OpenCV/opencv-3.4.1/data/haarcascades/haarcascade_frontalface_default.xml";
//xmlpath 记录.xml文件的路径
void detectAndDisplay(Mat image);
int main( int argc,char**argv )
{
string path="/Users/mac/Study/C/Face-Identify/search-img/5.jpg";//以检测图片4.jpg为例
Mat image =imread(path,-1); CascadeClassifier a; //创建脸部对象
if(!a.load(xmlPath)) //如果读取文件不出错,则检测人脸
{
cout<<"无法加载xml文件"<<endl;
return 0;
}
detectAndDisplay(image);// 检测人脸
return 0; } void detectAndDisplay(Mat image)
{
CascadeClassifier ccf; //创建脸部对象
ccf.load(xmlPath); //导入opencv自带检测的文件
vector<Rect> faces;
Mat gray;
cvtColor(image,gray,CV_BGR2GRAY);
equalizeHist(gray,gray);
ccf.detectMultiScale(gray,faces,1.1,3,0,Size(50,50),Size(500,500));
for(vector<Rect>::const_iterator iter=faces.begin();iter!=faces.end();iter++)
{
rectangle(image,*iter,Scalar(0,0,255),2,8); //画出脸部矩形
}
Mat image1; for(size_t i=0;i<faces.size();i++)
{
Point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2);
image1= image(Rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height));
} imshow("1",image);
imshow("2",image1);
cvWaitKey(0); }

效果如下:

返回目录

3-资料

  1. 基于Opencv的人脸检测及识别
  2. IOS学习笔记64--关于linker command failed with exit code错误
  3. Xcode出现( linker command failed with exit code 1)错误总结
  4. 一分钟解决Xcode的Undefined symbols for architecture x86_64编译错误
  5. facedetect.cpp

返回目录

OpenCV学习系列(一) Mac下OpenCV + xcode人脸检测实现的更多相关文章

  1. OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建

    # OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建 [-= 博客目录 =-] 1-学习目标 1.1-本章介绍 1.2-实践内容 1.3-相关说明 2-学习过程 2.1-hom ...

  2. Mac下OpenCV开发环境配置(Terminal和Xcode)

    亲证可用:http://www.jianshu.com/p/11959977589a   Mac OS X 10.1 Xcode 7.2(7C68) OpenCV 2.4.13 Mac OS10.11 ...

  3. [学习OpenCV攻略][002][Ubuntu下OpenCV安装]

    配置环境 操作系统 Ubuntu 12.04 OpenCV版本 opencv-1.0.0 学习书籍 <学习OpenCV> Liunx软件安装方法主要有3种: 1.编译安装,也就是通过编译源 ...

  4. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  5. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  6. opencv学习之路(41)、人脸识别

    一.人脸检测并采集个人图像 //take_photo.cpp #include<opencv2/opencv.hpp> using namespace cv; using namespac ...

  7. Opencv学习笔记1:安装opencv和VS2015并进行环境配置

    用了Opencv一段时间了,简单记录一下opencv在vs2015下的配置. 第一部分:OpenCV3.2.0的下载 OpenCV官方下载地址: https://opencv.org/releases ...

  8. 【Android学习笔记】Mac下Android Studio开发环境搭建

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/7829069.html 对于移动端这块,笔者之前一直都是进行iOS开发的,也从来 ...

  9. Mac下 Visual VM 无法检测到本地的Java进程

    我下载的是VisualVM1.4 下载完成之后,在左边栏Local哪里只有VisualVM自己的进程. 我本地启动的eclipse和intelliJ都没有检测到. 网上查阅后都是Window下的解决方 ...

随机推荐

  1. Vue2学习笔记:v-model指令

    1.v-model指令 <!DOCTYPE html> <html> <head> <title></title> <script s ...

  2. Azure Document DB 存储过程、触发器、自定义函数的实现

    阅读 大约需要 4 分钟 在上一篇随笔中记录的是关于Azure Cosmos DB 中SQL API (DocumentDB) 的简介和Repository 的实现.本随笔是Document DB 中 ...

  3. Azure Document DB Repository 的实现

    阅读 需要大约  5 分钟. 前景: Azure Cosmos DB 由 Microsoft 提供,是全球分布式多模型数据库. 通过 Azure Cosmos DB 跨任意数量的 Azure 地理区域 ...

  4. 解析苹果的官方例子LazyTableImages实现图片懒加载原理

    解析苹果的官方例子LazyTableImages实现图片懒加载原理 首先在官网下载源码: https://developer.apple.com/library/ios/navigation/#sec ...

  5. wxpython 窗口排版- proportion/flag/border参数说明

    新学习wxpython,一直纠结于窗口控件的排版,经过几天的查资料.试验,总结如下. 1.需求实例 来个实例,窗口有3行控件 第一行是文本提示(大小不变,文字左对齐,控件居左). 第二行依次为文本提示 ...

  6. ZT 计算一个无符整数中1Bit的个数(1) 2010-04-20 10:52:48

    计算一个无符整数中1Bit的个数(1) 2010-04-20 10:52:48 分类: C/C++ [转]计算一个无符整数中1Bit的个数(1)   Count the number of bits ...

  7. 学习python第三天之多行函数

    多行函数:(聚合函数/分组函数) 解释:多条数据进入,单条结果出来(多进单出) 1).max(obj):最大值 2).min(obj):最小值 3).sum(num):求和 4).avg(num):求 ...

  8. linux centos 7.5下 源码编译安装 lua环境

    lua 5.3.5 下载安装时发现缺少库 readline 需要添加依赖 yum search readline 看有哪些包 安装带有 devel 字样的 安装无 devel 的非开发包,通常不会自动 ...

  9. python-一个小爬虫,爬取图片

    import re import urllib.request # 爬取网页 def getHtml(url): page=urllib.request.urlopen(url) html=page. ...

  10. luogu P2617 Dynamic Rankings(主席树)

    嘟嘟嘟 一句话题意:带修改区间第\(k\)小. 不修改都会,主席树板子.但是有修改就要比较深入的理解主席树了. 众所周知,主席树中以\(i\)为根的线段树维护的是\([1, i]\)这个前缀的权值,因 ...