#6 Raspberry Pi | Tutorial Pemrograman Dasar OpenCV — Part 3
OpenCV Drawing (Text, line, circle, box and polyline)
Hai semua, setelah sebelumnya kita bermain dengan video dan camera yang dapat dilihat disini,
Sekarang kita akan lanjutkan dengan bahasan tentang OpenCV drawing. OpenCV dapat membantu kita dalam membuat objek vector pada gambar baik foto maupun video. Object vector tersebut bisa berupa tulisan, garis, kotak ataupun bentuk dua dimensi lainya.
Contoh penerapan lainya yang lebih menarik,
Berikut adalah outline yang akan dibahas pada tutorial kali ini :
- Draw text
- Draw Line, Circle, Rectangle & Polyline
- Custom Draw
Prerequisite
- Menggunakan Raspberry Pi 3,
- OS Raspbian (non Lite),
- Terinstall OpenCV > 3.0.0,
- Menggunakan moba-xterm untuk remote SSH Raspberry Pi, download disini,
- Clone Tutorial Resource di github saya, disini,
Cara clone, pada terminal Raspberry Pi 3, jalankan,
$ sudo apt-get install git
$ git clone https://github.com/Muhammad-Yunus/Basic-OpenCV-Programming.git
- Terinstall Jupyter Notebook pada Raspbery Pi, dapat diikuti disini,
Tutorial
Preparation
- Remote SSH Raspberry Pi Mengunakan Moba Xterm,
- Jalankan jupyter notebook pada Raspberry Pi menggunakan perintah berikut,
- Buka pada browser laptop dengan URL,
http://<IP Raspberry>:8888/?token=<token id>
- Buka folder
Basic-OpenCV-Programming
, lalu buka kembali file notebook yang digunakan pada tutorial sebelumnya (kalian bisa membuat file notebook baru jika diinginkan).
Draw text
Berikut adalah implementasi menambahkan text pada image menggunakan OpenCV,
method cv2.putText()
akan menuliskan text pada gambar pada lokasi yang ditentukan, kita bisa atur jenis font, ukuran font, ketebalan sampai warna.
Varian font face yang disediakan OpenCV,
Result pada Jupyter Notebook,
Draw Line, Circle, Rectangle & Polyline
Draw line : untuk menambahkan garis pada gambar kita dapat menggunakan cv2.line()
. Kita dapat atur posisi awal dan akhir garis sehingga memungkinkan kita untuk membuat garis horizontal, vertical sampai diagonal. Kita juga bisa atur warna pada garis dan juga ketebalan garis.
Berikut adalah implementasinya,
Result pada Jupyter Notebook,
Draw Circle : Untuk menambahkan lingkaran pada gambar, gunakan cv2.circle()
, kita dapat atur posisi usat lingkaran pada gambar, juga radius lingkaran. Selain itu kita dapat atur warna dan ketebalan lingkaran jik > 0, jika ketebalan di set -1, maka warna lingkaran akan digunakan sebagai fill color.
Berikut implementasi draw circle,
Result pada Jupyter Notebook,
Draw Rectangle : Untuk membuat persegi pada gambar kita gunakan cv2.rectangle()
, kita dapat atur posisi dan ukuran persegi dengan menentukan (x0, y0) dan (xt, yt) persegi, dimana,
(x0,y0) : Vertex of the rectangle, (top-left-corner rectangle)
(xt,yt) : Vertex of the rectangle opposite, (bottom-right-corner rectangle)
Berikut adalah implementasinya,
Result pada Jupyter Notebook,
Draw Polyline : Untuk membuat polyline pada gambar gunakan c2.polylines()
. Pertama kita harus defie titik pojok untuk polyline yang akan kita tambahkan, ini bisa dilakukan dengan numpy. Setelah itu pada polyline yang hendak dibuat kita bisa atur mulai dari warna dan ketebalanya.
Untuk menambahkan fill color pada polyline berbeda dengan object sebelumnya yang kita bahas. Gunakan cv2.fillPoly()
untuk menambahkan fill color pada polyline.
Berikut adalah implementasinya,
Result pada Jupyter Notebook,
Custom Draw
Pada bagian ini kita akan coba menambahkan beberapa trik yang akan berguna nantinya. Sepeti menambahkan opacity color pada object yang dibuat.
Image Blending : Untuk menambahkan object opacity kita memerlukan teknik blending image. Bleding image berguna untuk menggabungkan dua gambar dalam satu frame yang sama untuk berbagai keperluan.
Image blending yang akan digunakan adalah linear blending, dirumuskan sebagai berikut,
α bernilai antara 0–1 , yang merupakan temporal cross-dissolve antara dua image.
Berikut adalah contoh dasar image blending,
Result pada Jupyter Notebook,
Object opacity : Selanjutnya kita terapkan image blending diatas dengan cara membuat image copy dari image utama dengan warna hitam. Setelah itu kita tambahkan object draw pada image copy tersebut. Selanjutnya menggunakan cv2.addWeighted()
, blend image original dengan copy image dengan alfa = 1.0 dan beta = 0.25. Atur nilai beta agar opacity draw object berubah.
Berikut adalah implementasinya,
Result pada Jupyter Notebook,
Nah, ditahap ini kita sudah mampu menggunakan OpenCV Drawing library. Dan melakukan custom untuk dapat mengatur opacity level object drawing yang dibuat.
Sekian untuk tutorial kali ini. selanjutnya akan dibahas teknik dasar dalam pemrosesan citra seperti smoothing, binarization, edge detection, contour detection, shape detection sampai color detection.
Sekian dan terima kasih.