Python图像检测-开发环境设置

使用网上的代码,一来,再温习温习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

blogroll

social