1. 程式人生 > >ubuntu16.04配置opencv 實現人臉識別

ubuntu16.04配置opencv 實現人臉識別

  1. GCC 4.4.x 或者更高版本
  2. CMake 2.6 或者更高版本
  3. Git
  4. GTK+2.x 或者更高, 包括標頭檔案 (libgtk2.0-dev)
  5. pkg-config
  6. Python
  7. Numpy
  8. ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev

安裝環境

 sudo apt-get install build-essential
 sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev
libavformat-dev libswscale-dev
sudo pip install numpy

這些都是前戲,接下來進入正題。

在你想要安裝opencv的資料夾,輸入

git clone https://github.com/opencv/opencv.git 

我們從git原始碼安裝opencv
這裡寫圖片描述

我們進入opencv

接下來分為這麼幾步:

  1. 建立一個臨時資料夾,並進入
  2. cmake我們的opencv
  3. 安裝
mkdir release   #建立一個臨時資料夾

cd release  #進入它

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. #cmake我們的opencv
make sudo make install#安裝

其中有一步,在cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..中,我們可能會有一些東西下載不下來,這時候我們可以從通過手工下載。
這裡給一個連結http://blog.csdn.net/yiyuehuan/article/details/52951574

這樣就安裝好了opencv環境,但如果我們需要用python使用它的介面,我們還需要下載一些東西

python與opencv介面

pip install numpy 
pip install
Matplotlib pip install opencv-python

我們需要下載這三個模組,就可以了。

等我們下載完,就可以使用opencv的cv2模組來進行python程式設計了。

# coding:utf-8

import cv2

# 待檢測的圖片路徑
img_path = '2.jpg'
Classifier_path = '/media/asahi/資料/所有下載/opencv-3.3.1/data/haarcascades/haarcascade_frontalface_default.xml'
#這個路徑表示,我們下載的opencv中自帶的haarcascade_frontalface_default特徵集,用的時候只需
#把/media/asahi/資料/所有下載/opencv-3.3.1/,換成你自己的路徑就行了


face_cascade = cv2.CascadeClassifier(Classifier_path)

# 讀取圖片

image = cv2.imread(img_path)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)


# 探測圖片中的人臉

faces = face_cascade.detectMultiScale(

    gray,

    scaleFactor=1.15,

    minNeighbors=5,

    minSize=(5, 5),

    flags=cv2.CASCADE_SCALE_IMAGE   #因為現在opencv也升級成了3,所以cv2.cv也不存在了

)


for (x, y, w, h) in faces:
    cv2.rectangle(image,(x,y),(x+w,y+w),(0,255,0),2)
    # cv2.circle(image, ((x + x + w) / 2,
    #                    (y + y + h) / 2),
    #            w / 2,
    #            (0, 255, 0),
    #            float(2))

cv2.imshow("Find Faces!", image)

cv2.waitKey(0)

還有一個坑,博主這裡的Ubuntu還配置了ROS系統,如果直接執行是要報錯的。
比如

Traceback (most recent call last):
  File "/media/asahi/辦公/work/py/learning_opencv/learning_01.py", line 10, in <module>
    import cv2
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

查了一下,應該ros在搞事。我沒有更好的辦法只能吧/.bashrc中的最後連結到ros的語句給註釋了。
這裡寫圖片描述
然後重啟終端,就可以運行了。

這裡寫圖片描述