OpenCV (Open Source Computer Vision Library) adalah library untuk Computer Vision dan Machine Learning dengan lisensi open source. OpenCV dibangun untuk menyediakan infrastruktur yang umum digunakan pada Computer Vision. Menurut website sumbernya, OpenCV dibangun dengan 2500 lebih algoritma yang komprehensif untuk Computer Vision dan Machine Learning.
Lalu untuk apa penggunaan OpenCV?. Mungkin anda pernah mengupload foto di sosial media Facebook. Lalu tiba-tiba dengan cerdasnya facebook mengenali setiap wajah teman anda untuk di tag. Atau jika anda jalan-jalan di jakarta, dan anda melakukan pelanggaran lalulintas. Tiba-tiba anda akan mendapatkan tilang secara otomatis. Ini adalah hasil kerja Computer Vision, karena komputer akan melihat dan mendeteksi obyek yang di sesuaikan dengan program.
Pada tutorial kali ini kita akan coba menginstall OpenCV pada perangkat Raspberry Pi. Yang selanjutnya akan bisa di kembangkan ke aplikasi kamera pintar seperti pendeteksi wajah (Face Recognition), pengenalan obyek (Object Detection), atau hanya untuk kamera keamanan yang cerdas.
Persiapan
Siapkan 1 Unit Raspberry Pi yang sudah terinstall Raspbian Stretch fresh. Untuk cara install Raspberry Pi, silahkan anda lihat artikel Cara Install Raspberry Pi Secara Headless atau Cara Install Raspberry Pi dengan NOOBS. Siapkan juga koneksi internet yang memadai, karena kita akan mendownload software yang cukup besar.
Jika anda tidak menggunakan display, anda harus mengaktifkan SSH server dan VNC Server di Raspberry Pi anda. Caranya bisa ditemukan di artikel Instalasi secara Headless.
Install OpenCV 4
Silahkan mengikuti langkah-langkah instalasi di bawah ini. Pada saat artikel ini di tulis, kami menggunakan Raspberry Pi 3 model B+ dengan RAM 1GB dan 4 Core Prosesor. Waktu untuk instalasi kurang lebih 2 hingga 5 jam, tergantung kecepatan internet dan SD Card anda. Ikuti langkah-langkah dengan seksama agar instalasi OpenCV ini berhasil.
Expand Filesystem
Pada saat Raspberry Pi anda di Install, file system yang di gunakan adalah file system dari image asli. Kita akan menggunakan semua kuota yang ada pada Micro SD kita. Ketikan peritah berikut;
sudo raspi-config
Setelah muncul display config Raspberry Pi, pilih pada Advanced Option lalu tekan tombol Enter. Selanjutnya pilih pada pilihan A1 Expanded Filesystem. Anda akan di peringatkan bahwa filesystem baru akan aktif setelah Raspberry Pi anda di reboot. Pilih OK dan Finish, jika ada permintaan Reboot, Silahkan pilih Reboot.
Hapus Aplikasi Yang tidak Diperlukan
Selanjutnya kita akan coba menghapus aplikasi yang tidak diperlukan untuk menghemat kapasitas SD Card. Jika SD Card anda cukup besar, dan anda tidak ingin menghapus aplikasi yang tidak di perlukan, anda bisa mengabaikan langkah ini.
sudo apt-get purge wolfram-engine -y
sudo apt-get purge libreoffice* -y
sudo apt-get clean
sudo apt-get autoremove -y
Install software yang diperlukan
Sebelum kita mengcompile OpenCV, ada beberapa software yang di perlukan untuk instalasi. Ketikan perintah berikut di Raspberry Pi anda untuk menginstall software pendukung.
Ada baiknya anda merubah repositori ke repositori Indonesia agar proses instalasi lebih cepat. Caranya anda bisa mengikuti langkah di artikel Mengubah Repositori Indonesia di Raspberry Pi.
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install build-essential cmake unzip pkg-config -y
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt-get install libxvidcore-dev libx264-dev -y
sudo apt-get install libgtk-3-dev -y
sudo apt-get install libcanberra-gtk* -y
sudo apt-get install libatlas-base-dev gfortran -y
sudo apt-get install python3-dev -y
Download OpenCV
Selanjutnya, kita akan coba untuk mendownload source OpenCV terbaru. Anda bisa melihat versi terbaru melalui halaman resmi OpenCV di https://opencv.org/releases/. Saat artikel ini di buat, versi terbaru adalah versi 4.1.0. Kita akan menginstall versi terbaru tersebut. Ada 2 file yang akan kita download, yaitu OpenCV dan OpenCV Contrib. Ketikan perintah berikut untuk mendownload kedua file tersebut di direktori utama.
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.1.0.zip
Perintah tersebut akan mendownload file OpenCV dan di simpan ke dua buah file dengan nama opencv.zip dan opencv_contrib.zip. Selanjutnya, ekstrak ke dua file tersebut.
unzip opencv.zip
unzip opencv_contrib.zip
Hasil ekstraksi diatas adalah 2 buah folder yaitu opencv-4.1.0 dan opencv_contrib-4.1.0. Kita akan rename ke dua folder tersebut untuk mempermudah instalasi menjadi opencv dan opencv_contrib.
mv opencv-4.1.0 opencv
mv opencv_contrib-4.1.0 opencv_contrib
Hapus file opencv.zip dan opencv_contrib.zip untuk menghemat space.
rm -f opencv.zip opencv_contrib.zip
Konfigurasi Virtual Environment untuk Python3
Virtual Environment berguna agar semua instalasi yang dilakukan hanya bekerja di sistem virtual. Ini akan mempermudah agar instalasi tidak bercampur dengan sistem utama. Selain itu virtual environment akan menjalankan versi berapa Python default yang akan di jalankan. Dengan Virtual Environment, akan mengisolasi sistem utama dari kesalahan kesalahan konfigurasi. Kita akan menginstall virtualenvwrapper dengan perintah pip.
sudo pip install virtualenv virtualenvwrapper
sudo pip3 install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip
Untuk menyelesaikan instalasi, kita akan mengupdate file ~/.profile. Buka dan modifikasi ~/.profile dengan perintah nano.
nano ~/.profile
Lalu sisipkan kode berikut.
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
Simpan file ~/.profile dengan menekan tombol CTRL+X dilanjutkan dengan konfirmasi y.
Selanjutnya, gunakan file ~/.profile sebagai source.
source ~/.profile
Konfigurasi selesai, selanjutnya kita akan coba membuat Virtual Environment baru, misalnya dengan nama cv dengan versi Python 3 sebagai default.
mkvirtualenv cv -p python3
Selanjutnya kita akan bekerja pada environment cv tersebut.
workon cv
Sekarang kita sudah berada di Virtual Environment cv, di terminal anda akan di tandai dengan tanda (cv) seperti gambar berikut.
Install NumPy
Selanjutnya kita akan install numpy pada environment kita. NumPy adalah library Python untuk Scientific Computing. Ketikan kode berikut, pastikan anda sudah berada di Virtual Environment cv.
pip install numpy
Selanjutnya kita akan mengcompile OpenCV di envoronment cv.
Compile OpenCV
Konfigurasi CMake OpenCV
Sebelum proses compile, kita akan melakukan konfigurasi OpenCV. Semua konfigurasi akan di simpan pada folder build di folder utama opencv. Ketikan perintah berikut.
cd ~/opencv
mkdir build
cd build
Selanjutnya jalankan perintah CMake dengan konfigurasi berikut.
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..
Tunggu hingga proses CMake selesai. Pada tahap ini prosesnya lumayan lama, anda harus sabar menunggu.
Menaikan Swap
Swap Space akan membantu memory utama Raspberry pi. Kita akan coba menaikan swap space menjadi 2GB. Caranya adalah, edit file /etc/dphys-swapfile, dan lakukan konfigurasi pada variabel CONF_SWAPSIZE. Secara default, ukuran swap Raspberry pi adalah 100.
sudo nano /etc/dphys-swapfile
Edit pada bagian CONF_SWAPSIZE menjadi:
CONF_SWAPSIZE=2048
hasil akhir file seperti contoh pada gambar di bawah ini. Tekan CTRL+X dan konfirmasi Y untuk menyimpan file.
Selanjutnya, aplikasikan ukuran swap yang baru lalu start swap service dengan perintah berikut.
sudo dphys-swapfile setup
sudo dphys-swapfile swapon
Anda bisa mengecek konfigurasi swap yang baru dengan perintah:
free -m
Outputnya bisa terlihat seperti gambar di bawah ini. Dapat dilihat bahwa total swap yang baru adalah 2047MB (atau 2GB).
Sekarang anda siap untuk mengcompile OpenCV.
Compile OpenCV
Kita akan mengcompile OpenCV dengan menggunakan semua core prosesor Raspberry Pi. Ini akan menggunakan semua resource prosesor dan akan membuat panas Raspberry Pi anda. Pastikan Raspberry Pi anda menggunakan pendingin heatsink atau kipas, dan simpan Raspberry Pi anda di ruangan dengan suhu yang cukup dingin.
Pada saat proses make, akan memakan waktu yang cukup lama, jadi anda harus cukup sabar. Ketikan perintah berikut untuk memulai proses;
make -j4
Opsi -j4 akan menggunakan semua 4 core prosesor anda. Anda bisa menggunakan 2 core atau 3 core. Konsekuensinya, proses akan semakin lama.
Setelah proses compile selesai, install dengan perintah berikut.
sudo make install
sudo ldconfig
Link OpenCV ke Virtual Environment
Setelah proses compile dan install OpenCV selesai, selanjutnya kita akan membuat symlink module OpenCV agar dapat bekerja di Virtual Environment. Ketikan perintah berikut untuk membuat symlink.
ln -s /usr/local/lib/python3.5/site-packages/cv2/python-3.5/cv2.cpython-35m-arm-linux-gnueabihf.so ~/.virtualenvs/cv/lib/python3.5/site-packages/cv2.so
Test OpenCV
Selanjutnya kita akan melakukan test OpenCV apakah sudah bisa bekerja pada Virtual Environment kita. Ketikan perintah berikut untuk mengeksekusi python di environment cv.
workon cv
python
>>> import cv2
>>> cv2.__version__
>>> exit()
Atau dengan cara:
python -c 'import cv2; print(cv2.__version__)'
Pada perintah di atas kita akan menjalankan program python yang menampilkan versi dari OpenCV. Apabila anda mendapatkan respon seperti ini:
Hasil Test OpenCV
Berarti OpenCV sudah siap di gunakan. Sampai tahap ini, proses Instalasi OpenCV sudah selesai. Pada artikel selanjutnya, kita akan membuat proyek sederhana Computer Vision dengan OpenCV.
Kesimpulan
Install OpenCV di Raspberry Pi cukup rumit dan cukup memakan waktu. Anda harus teliti tahap demi tahap tanpa ada yang terlewat. Namun kerumitan saat install OpenCV akan terbayar saat anda membuat proyek pertama nanti. Kita akan coba membuat kamera keamanan pendeteksi manusia, kamera pendeteksi wajah, dan deep learning deteksi objek dengan TensorFlow.
Ikuti terus TeknoTut untuk mendapatkan artikel-artikel tentang teknologi.