ubuntu16.04配置opencv 實現人臉識別
阿新 • • 發佈:2019-02-16
- GCC 4.4.x 或者更高版本
- CMake 2.6 或者更高版本
- Git
- GTK+2.x 或者更高, 包括標頭檔案 (libgtk2.0-dev)
- pkg-config
- Python
- Numpy
- 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
接下來分為這麼幾步:
- 建立一個臨時資料夾,並進入
- cmake我們的opencv
- 安裝
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的語句給註釋了。
然後重啟終端,就可以運行了。