วันพุธที่ 19 กันยายน พ.ศ. 2561

การติดตั้ง OpenCV 3 และการติดตามวัตถุ





OpenCV คือ โปรแกรมที่พัฒนาขึ้นโดยได้รับการสนับสนุนจาก Intel Corporation จำกัด เป็นซอฟต์แวร์ แบบเปิดเผยรหัส (Library Open Source) สำหรับใช้ในการประมวลผลภาพ (Image Processing) เพื่อให้สามารถนำไปต่อยอดพัฒนาโปรแกรมต่าง ๆ ได้ง่าย ใช้ได้บนระบบปฏิบัติการที่เป็น Linux และ Microsoft Windows และสามารถพัฒนาโปรแกรมได้หลากหลายภาษา

**** การใช้ประโยขน์ ****

เพื่อให้การพัฒนาโปรแกรมทางด้าน การมองเห็นของคอมพิวเตอร์ (Computer Vision) คือสามารถประมวลผลภาพดิจิตอลได้ทั้งภาพนิ่ง และภาพเคลื่อนไหวเช่น ภาพจากกล้อง VDO หรือ VDO File เป็นไปได้อย่างสะดวก มีฟังก์ชันสำเร็จรูปสำหรับจัดการข้อมูลภาพ และการประมวลผลภาพพื้นฐานเช่น การหาขอบภาพ การกรองข้อมูลภาพ 


1. การติดตั้ง OpenCV 3

เปิดโปรแกรม เทอมินอล (Root Terminal)




ขั้นตอนที่ 1

-อัพเดตและปรับปรุงแพคเกจของ Raspberry Pi Firmware

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update



-เมื่อทำการอัพเดตเรียบร้อยต้องทำการรีบูทเครื่องใหม่

sudo reboot


-ติดตั้งฟังก์ชันเพิ่มเติม

sudo apt-get install build-essential cmake pkg-config


-ทำการติดตั้ง image I/O packages พวกนามสกุล JPEG, PNG, TIFF, etc

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev


-ทำการติดตั้งฟังก์ชันเกี่ยวกับการใช้งานวีดีโอ
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev


-ทำการติดตั้ง GTK development library จะทำให้เราสามารถ compile highgui ซึ่งเป็น module ย่อย ของ OpenCV ซึ่งฟังก์ชันนี้จะทำให้เราสามารถเปิดรูปภาพออกมาที่หน้าจอได้

sudo apt-get install libgtk2.0-dev


การดำเนินงานภายใน OpenCV จำนวนมาก (เช่นการดำเนินการเมทริกซ์) สามารถเพิ่มประสิทธิภาพได้มากขึ้นโดยการติดตั้งการพึ่งพาพิเศษบางอย่าง

sudo apt-get install libatlas-base-dev gfortran


ขั้นตอนที่ 2


-ในขั้นตอนนี้ มีขั้นตอนการดำเนินการติดตั้ง โดยที่เราต้องไปเลือก OpenCV version 3 จาก OpenCV repository(ถ้ามีversion ใหม่กว่านี้ให้เลือกตัวนั้น)

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.3.zip
unzip opencv.zip

-เพื่อการติดตั้งที่สมบูรณ์ของ OpenCV 3 ให้ไปดึงไฟล์จาก opencv_contrib

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip
unzip opencv_contrib.zip


ขั้นตอนที่ 3


ก่อนที่เราจะเริ่มคอมไพล์ OpenCV บน Raspberry Pi 3 ต้องติดตั้ง pip ผู้จัดการ package ของ Python:

wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

-ใช้ virtualenv หรือ virtualenvwrapper เพื่อให้สามารถแสดงภาพได้หลายภาพ นิยมใช้ virtualenvwrapper มากกว่าเพราะมีฟังก์ชันหลากหลาย

sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip

-ต้องเข้าไปที่ ~/.profile เพื่อเพิ่มข้อความ 2 บรรทัด โดยใช้คำสั่ง

echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile



ตอนนี้เราได้อัปเดตโปรไฟล์ ~ / .profile แล้ว และจำเป็นต้องโหลดใหม่เพื่อให้แน่ใจว่าการเปลี่ยนแปลงจะมีผลแล้ว โดย

source ~/.profile


การสร้างสภาพแวดล้อมเสมือน 
OpenCV

ต่อไปให้สร้างสภาพแวดล้อมเสมือน OpenCV ที่เราจะใช้สำหรับการพัฒนา Image Processing และ Computer Vision

mkvirtualenv cv -p python2
mkvirtualenv cv -p python3


หลังจากนั้นจะสามารถใช้ workon ได้


source ~/.profile
workon cv


ต้องเห็นข้อความ (CV) ก่อนหน้าพร้อมท์ แสดงว่าอยู่ในสภาพแวดล้อมเสมือน 
OpenCV แล้ว


ทำการติดตั้ง numpy ดังนี้

pip install numpy




ขั้นตอนที่ 4 

-ขณะนี้เราพร้อมที่จะ compile OpenCV

source ~/.profile
workon cv

cd ~/opencv-3.4.3/
mkdir build
cd build




เมื่อมั่นใจว่าคุณอยู่ในสภาพแวดล้อมเสมือน cv แล้วเราสามารถตั้งค่าการสร้าง CMake ของเราโดยใช้ 

cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.3/modules \ -D BUILD_EXAMPLES=ON ..





ติดตั้ง OpenCV


make clean
make
sudo make install

จะใช้เวลาติดตั้งนานพอสมควร



เมื่อครบ 100 % และ ทำการติดตั้งจนกระทั่ง เสร็จสมบูรณ์

แล้วใช้คำสั่ง


sudo ldconfig



เชื่อมโยง OpenCV เข้ากับสภาพแวดล้อมเสมือน cv  สำหรับ Python 2.7:

cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

ตรวจสอบการทำงาน


source ~/.profile 
workon cv
python


ทดลองนำเข้า cv2  และ ตรวจสอบเวอร์ชั่น ของ  OpenCV โดยคำสั่ง

 
 import cv2
 
 
 cv2.__version__



ถ้าไม่มี error และ แสดงเวอร์ชั่นของ OpenCV ในตัวอย่างคือ 3.4.3

แสดงว่า 
OpenCV ของเรานั้นพร้อมใช้งานแล้ว


นอกจากนี้เรายังจะใช้ imutils คอลเลกชันของ OpenCV เพื่ออำนวยความสะดวกในการทำงานขั้นพื้นฐานบางอย่าง (เช่นปรับขนาด) ได้ง่ายขึ้น

ทำการติดตั้ง imutils ดังนี้

source ~/.profile 
workon cv
pip install imutils



2. ทดสอบ โปรเจค ติดตามวัตถุ Ball Tracking with OpenCV


ให้ติดตั้งโปรแกรมถ่ายโอนไฟล์ SFTP Server ตามลิงค์ด้านล่าง


การติดตั้งโปรแกรมถ่ายโอนไฟล์ SFTP Server


ดาวน์โหลด โปรเจค ติดตามวัตถุ Ball Tracking with OpenCV


https://drive.google.com/open?id=1kRqn3hXl_eBJFPKqc-Os7VrxXNRIVuWv


คลายซิบ และ อัพโหลด ขึ้นสู่ 
Raspberry Pi 3 โดยใช้ โปรแกรม FileZilla (ไฟล์ซิลลา)



โปรเจค ติดตามวัตถุ Ball Tracking อัพโหลด ขึ้นสู่ Raspberry Pi 3 สำเร็จ





กลับไปที่ Raspberry Pi 3  เปิดโปรแกรม เทอมินอล (Root Terminal)  ใช้คำสั่ง


source ~/.profile 
workon cv
cd ball-tracking


แล้วใช้คำสั่ง

python ball_tracking.py --video ball_tracking_example.mp4




โปรแกรมจะเปิดไฟล์วีดีโอ และ แสดงการติดตามวัตถุ ที่เพิ่มเข้ามาจากการเขียนโปรแกรม




3. ทดสอบการติดตามวัตถุ จาก Camera V2 Module


ให้ติดตั้งติดตั้ง Camera V2 Module ตามลิงค์ด้านล่าง

การติดตั้งและการใช้งาน Camera V2 Module


ให้ติดตั้งติดตั้ง Motion ตามลิงค์ด้านล่าง

การติดตั้ง Motion และ ดูภาพกล้องผ่านทางหน้าเว็บเพจ


ต้องแก้ไขไฟล์ /etc/default/motion 

ถ้าเคยทำ "การติดตั้ง Motion และ ดูภาพกล้องผ่านทางหน้าเว็บเพจ" มาก่อน เพราะจะมีการแก้ค่าจาก no เป็น yes เอาไว้ (ถ้าไม่เคยทำก็ไม่ต้องแก้ไข) โดยแก้ไขให้กลับมาเป็น start_motion_daemon=no เหมือนเดิม

เปิดไฟล์ /etc/default/motion มาแก้ไข โดยใช้คำสั่ง


sudo nano /etc/default/motion



ค่าเดิม start_motion_daemon=yes แก้เป็น start_motion_daemon=no


จากนั้นบันทึก Ctrl + O แล้วตามด้วย Enter เพื่อบันทึกข้อมูลใหม่ แล้ว 
กด Ctrl + X เพื่อออกจากโปรแกรม

-เมื่อทำการอัพเดตเรียบร้อยต้องทำการรีบูทเครื่องใหม่


sudo reboot


ไปที่ Raspberry Pi 3  เปิดโปรแกรม เทอมินอล (Root Terminal) 


ติดตั้ง picamera ให้กับ OpenCV โดยใช้คำสั่ง

source ~/.profile 
workon cv
pip install picamera



ติดตั้ง GPIO ให้กับ OpenCV โดยใช้คำสั่ง

source ~/.profile 
workon cv
pip install RPi.GPIO




ทดสอบการติดตามวัตถุ จาก Camera V2 Module โดยใช้คำสั่ง

source ~/.profile 
workon cv
cd ball-tracking
python ball_tracking.py



ผลลัพธ์ ทดสอบการติดตามวัตถุ จาก Camera V2 Module  โดยใช้ลูกบอลสีเหลือง ในตัวอย่างใช้เป็นลูกเทนนิส จะเห็นเป็นภาพเคลื่อนไหวที่ถ่ายจากกล้อง และ แสดงการติดตามวัตถุ

...

หมายเหตุ : เรียบเรียงและแก้ไขดัดแปลงจากบทความด้านล่าง

Install guide: Raspberry Pi 3 + Raspbian Jessie + OpenCV 3

Ball Tracking with OpenCV

....

ไม่มีความคิดเห็น:

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