Published: 2017-12-24 22:20:00
By ytwan
In Program .
tags: things
使用网上的代码,一来,再温习温习Python的编程,二来呢也是
人脸识别系统一般分为:人脸图像采集、人脸图像预处理、人脸图像特征提取以及匹配与识别
0.首先明确环境
Python的版本以及位数
develop3.6
develop2.7
系统环境的python
2.6
计算环境的python
2.7
最新功能的python
3.5
第一行:引入cv2包
这个包直接安装没有成功,后来下载了对应的版本
<对应版本,找起来也是坑啊>找到后,放到目录中,给出绝对路径,然后安装。
pip install /opt/image/opencv_python-3.3.0.10-cp27-cp27m-manylinux1_x86_64.whl
下载地址: https://pypi.python.org/pypi/opencv-python
第二步:引入一个XML文件
这个需要注意,查看一下内容格式,而不仅仅是后缀
01.文档类型(doctype)
<!DOCTYPE html> 空一格后跟着文档根元素的名称。
而XML的文档 <?xml version="1.0"?>
haarcascade_frontalface_default.xml
<?xml version="1.0"?>
haarcascade_frontalface_default.xml
<!DOCTYPE html> 查看文件中内容,如果是这个,则是下载错误了
02.作用和结构以及内容
haarcascade_frontalface_alt_tree.xml是最严格的分类器,
数据结构包括Data和FeatureEvaluator两个主要部分。
Data中存储的是从训练获得的xml文件中载入的分类器数据;
而FeatureEvaluator中是关于特征的载入、存储和计算
.可以使用OpenCV训练构建自己想要的
下载地址:
https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
03.
CascadeClassifier 是Opencv中做人脸检测时候的一个级联分类器,
该类中封装的是目标检测机制即滑动窗口机制+级联分类器的方式
04.
参数:scaleFactor 是 图像的缩放因子,minSize 是检测窗口的大小
上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
imagepath = r'/opt/internet.jpg'
outpath = r'/opt/201712_detectd_heat.png'
#加载分类器 cv2.CascadeClassifier
face_cascade = cv2 . CascadeClassifier ( r'/opt/haarcascade_frontalface_default.xml' )
#加载目标图片 imread
example_image = cv2 . imread ( imagepath )
#多尺度检测 detectMultiScale
faces = face_cascade . detectMultiScale ( example_image , scaleFactor = 1.15 , minNeighbors = 5 , minSize = ( 100 , 100 ))
print "find{0}face!" . format ( len ( faces ))
#为每个人脸画一个框-循环读取人脸的矩形对象列表,获得人脸矩形的坐标和宽高, 然后在原图片中画出该矩形框
for ( x , y , w , h ) in faces :
cv2 . rectangle ( example_image ,( x , y ),( x + w , y + h ),( 0 , 255 , 0 ), 2 )
#保存检测后的结果
cv2 . imwrite ( outpath , example_image )
说明:
01.绝大部分的工作OpenCV已经默默地替我们处理了,所以我们使用起来才会这么简单。
OpenCV是一个基于BSD许可发行的跨平台计算机视觉库,用C/C++编写,
同时提供了Python、Ruby、MATLAB等接口,
实现了图像处理和计算机视觉方面的很多通用算法
02.涉及编程的还是使用Google吧,最不济的话也可以用Bing的国际版。百度,更懂中国
03.IndentationError: expected an indented block 缩进错误: 需要缩进排版块
python的是用缩进来识别语法逻辑块
说明此处需要缩进,你只要在出现错误的那一行,按空格或Tab(但不能混用)键缩进就行 -- 可读性,可解释
错误类型:
SyntaxError Python的语法错误
IndentationError 缩进错误
TabError Tab和空格混合使用
ImportError 导入模块失败的时候
SystemError Python编译器系统错误
RuntimeError 一般的运行时错误
MemoryError 内存溢出(可通过删除对象释放内存)
参考:
01.http://opencv-python-tutroals.readthedocs.io
02.7行Python代码的人脸识别 http://blog.csdn.net/wireless_com/article/details/64120516
03.https://github.com/wepe/OpenCV-demo/blob/master/FaceDetection_python-opencv/face_detection.py
开发环境
1.pyenv 是针对 python 版本的管理
virtualenv来管理python的包环境
virtualenv 是针对python的包的多版本管理,
通过将python包安装到一个模块来作为python的包虚拟环境,
通过切换目录来实现不同包环境间的切换
2.安装虚拟环境
cd /opt/world
pyenv virtualenv 2.7.14 develop2.7
pyenv virtualenv 3.6.3 develop3.6
3.激活虚拟环境
切换目录
cd /opt/world
激活
激活虚拟环境 pyenv activate develop3.6
激活虚拟环境 pyenv activate develop2.7
退出虚拟环境 pyenv deactivate develop3.6
参考:
1.注意事项:如果不是超级用户,需要sudo pip install virtualenv
2. How to install the latest version of Python on CentOS
https://danieleriksson.net/2017/02/08/how-to-install-latest-python-on-centos/
3. 使用 pyenv + virtualenv 打造多版本 Python 开发环境 http://python.jobbole.com/85587/
4. http://pylixm.cc/posts/2016-06-19-Virtualenv-install.html