PhadaDev.com แหล่งความรู้สู่นักพัฒนา ที่นี่ ที่เดียว :) ::: เรียนรู้สู่นักพัฒนาตั้งแต่พื้นฐานไปจนถึง Advance ::: อัพเดทข้อมูลข่าวสารเทคโนโลยีในสายDeveloper ได้ที่นี่

วิธีลง OpenCV3+ Raspberry Pi3+Raspbian Jessie(Python2.7)

     การประมวลผลภาพที่ใช้กันมากที่สุดคงหนีไม่พ้นไลบรารี่ที่ชื่อว่า OpenCV : Open Source Computer Vision ซึ่งวันนี้เราจะมาลง
OpenCV3 บนบอร์ด Raspberry Pi3 + Raspbian Jessie(Python2.7) กันแบบ Step by Step กันนะครับ(สำหรับ Python3 รอบทความหน้านะครับ) และจะมาแนะนำวิธีใช้งานในบทความถัดไป :) :) :)

1. Expand filesystem (ขยายขนาด SD Card บน RPI ให้ได้ขนาดความจุสูงสุด)
1.1 เข้าโหมดตั้งค่า RPI >> Advanced Options >> กด Enter
sudo raspi-config

เลือก Expand Filesystem >> กด Enter

เลือก OK >> กด Enter

เลือก Finish >> กด Enter

เลือก Yes >> กด Enter เพื่อ Reboot

หลังการ Restart เช็คพื้นที่ใน RPI ว่าถูกขยายพื้นที่จนเต็มหรือยัง
df -h
จะเห็นว่าผู้เขียนใช้ SD Card 16 GB ตอนนี้ยังไม่ได้ลง OpenCV เลยแต่พื้นที่ถูกใช้ไปแล้วถึง 39% ฉะนั้นจึงต้องเพิ่มพื้นที่ว่างให้กับ RPI โดยการลบโปรแกรมที่ไม่ได้ใช้งาน
sudo apt-get purge wolfram-engine

2. Install dependencies
2.1ทำการอัพเดทระบบปฏิบัติการ
sudo apt-get update && sudo apt-get upgrade -y
2.2 ติดตั้งเครื่องมือที่จำเป็นรวมถึง CMake ซึ่งต้องใช้ในขั้นตอนการ build OpenCV
sudo apt-get install build-essential cmake pkg-config
2.3 ติดตั้งแพคเกจ อินพุท/เอาท์พุตของรูปภาพเพื่อให้เรานำเข้าภาพนามสกุลต่างๆได้ เช่น JPEG, PNG, TIFF ฯลฯ
sudo apt-get install build-essential cmake pkg-config
2.4 ติดตั้งแพคเกจ อินพุท/เอาท์พุตสำหรับวิดีโอ
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
2.5 ไลบรารี OpenCV มาพร้อมกับโมดูลย่อยชื่อ highgui ซึ่งใช้เพื่อแสดงภาพไปยังหน้าจอของเราและสร้าง GUI ขั้นพื้นฐาน ในการรวบรวมโมดูล highgui เราจำเป็นต้องติดตั้งไลบรารีการพัฒนา GTK
sudo apt-get install libgtk2.0-dev
2.6 เพิ่มประสิทธิภาพการดำเนินงานภายในของ OpenCV เช่นการดำเนินการเมทริกซ์ โดยการติดตั้ง dependencies เพิ่มเติม
sudo apt-get install libatlas-base-dev gfortran
2.7 ไลบรารีการเพิ่มประสิทธิภาพเหล่านี้มีความสำคัญอย่างยิ่งสำหรับอุปกรณ์ที่มีทรัพยากรจำกัดเช่น Raspberry Pi
       สุดท้ายเรามาติดตั้งเฮดเดอร์ไฟล์ทั้ง Python 2.7 และ Python 3 เพื่อให้เราสามารถคอมไพล์ OpenCV ด้วย Python bindings ได้
sudo apt-get install python2.7-dev python3-dev

3. ดาวน์โหลดซอร์สโค้ดของ OpenCV
3.1 โหลดตัวโปรแกรม OpenCV (ในบทความนี้ใช้เวอร์ชั่น 3.1.0 ในอนาคตถ้ามีเวอร์ชั่นใหม่กว่า สามารถแทนที่ 3.1.0 เป็นเวอร์ชั่นล่าสุดได้เลย
cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.1.0.zip
unzip opencv.zip
3.2 เราต้องการติดตั้ง OpenCV อย่างเต็มรูปแบบเพื่อให้สามารถใช้ฟังก์ชั่นพิเศษ เช่น SIFT , SURF เป็นต้น
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
unzip opencv_contrib.zip

4. ติดตั้ง Package ที่จำเป็นของ Python 2.7
4.1 ก่อนจะเริ่มคอมไพล์ OpenCV จำเป็นต้องติดตั้ง pip และ python package manager ก่อน
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
4.2 เบื้องต้นการยังไม่ลง virtualenv และ virtualenvwrapper อาจจะใช้ OpenCV ได้ แต่แนะนำให้ลงไปเลยเพื่อให้สามารถรองรับโปรเจกต์ที่ซับซ้อนขึ้นในอนาคต
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
4.3 ขณะนี้เราได้ติดตั้ง virtualenv และ virtualenvwrapper สำเร็จแล้ว ต่อไปเราต้องอัพเดทไฟล์ ~/.profile โดยพิมพ์คำสั่งด้านล่าง(ทีละคำสั่ง)
(กดที่รูปเพื่อขยายรูปภาพ)
echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile
4.4 ตอนนี้เราได้อัพเดทไฟล์ ~/.profile แล้วทำการล็อกเอาท์ออก
source ~/.profile
หมายเหตุ แนะนำให้รันไฟล์  ~/.profile ทุกครั้งที่มีการเปิด Terminal ใหม่ เพื่อให้แน่ใจว่าตัวแปรในระบบได้รับการตั้งค่าที่ถูกต้อง
4.5 สร้าง Python virtual environment
mkvirtualenv cv -p python2
4.6 วิธีเช็คว่าคุณอยู่ใน “cv” virtual environment หรือไม่ทำดังนี้
source ~/.profile
workon cv

4.7 ตอนนี้เราจะอยู่ในสภาพแวดล้อมของ "cv" แบบเสมือน(virtual) ทำการลง numpy (แพคเกจของPython ที่ใช้ประมวลผลทางตัวเลข)
pip install numpy

5. คอมไพล์และติดตั้ง OpenCV
5.1 เข้าสู่  "cv" virtual environment
workon cv
5.2 ทำการตั้งค่า หรือ build โดยใช้ Cmake
cd ~/opencv-3.1.0/
mkdir build
cd build
(กดที่รูปเพื่อขยายรูปภาพ)
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \
    -D BUILD_EXAMPLES=ON ..

เมื่อสำเร็จจะได้ดังภาพด้านล่าง
(กดที่รูปเพื่อขยายรูปภาพ)
5.3 คอมไพล์ OpenCV โดยใช้ 4 core (-j4) เพื่อให้คอมไพล์ได้เร็วขึ้น
make -j4
หมายเหตุ1 ถ้าคอมไพล์ผ่านแล้วข้ามไปข้อ 5.4 ได้เลยครับ
หมายเหตุ2 ถ้าคอมไพล์ไม่ผ่านให้รันโค้ดด้านล่าง แล้วค่อยรัน make -j4 อีกครั้ง
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_PRECOMPILED_HEADERS=OFF -DWITH_FFMPEG=OFF ..
make -j4
หมายเหตุ3 ถ้ายังคอมไพล์ไม่ผ่านให้แก้ดังนี้ ในบางครั้งการใช้ 4 core ในการคอมไพล์อาจเกิดความผิดพลาดได้ ถ้าเกิดปัญหาดังกล่าวให้ทำกระบวนการด้านล่าง make clean >> make 
make clean
make
(กดที่รูปเพื่อขยายรูปภาพ)
5.4 ทำการติดตั้ง OpenCV
sudo make install
sudo ldconfig

6. ติดตั้ง OpenCV บน Raspberry Pi สำเร็จ
6.1 จากขั้นตอนที่ 5 ถ้าติดตั้งสมบูรณ์ โปรแกรมคุณจะถูกติดตั้งที่ /usr/local/lib/python2.7/site-pacakges ตรวจสอบดูโดยใช้คำสั่ง ls
ls -l /usr/local/lib/python2.7/site-packages/
(กดที่รูปเพื่อขยายรูปภาพ)
6.2 ทำการเชื่อมโยง OpenCV เข้ากับ "cv" virtual environment (for Python2.7)
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

7. ทดสอบการใช้งานของ OpenCV3
7.1 ทดสอบว่า OpenCV ลงเสร็จสมบูรณ์แล้ว
source ~/.profile 
workon cv
python
import cv2
cv2.__version__
จะได้เวอร์ชั่นของ OpenCV ดังภาพด้านล่าง
(กดที่รูปเพื่อขยายรูปภาพ)
7.2 ออกจากโหมด Python
exit()
7.3 เมื่อลงโปรแกรมOpenCV เสร็จแล้วสามารถลบไฟล์ติดตั้งเพื่อเพิ่มพื้นที่ใช้งานได้
rm -rf opencv-3.1.0 opencv_contrib-3.1.0

พบกับบทความดีๆอีกมากมายที่นี่ PhadaDev.com
หรือมีคำถาม แวะไปพูดคุยกันได้ที่ เพจPhadaDev นะครับ
ขอบคุณครับ :)

0 ความคิดเห็น:

แสดงความคิดเห็น