Selain dimanfaatkan untuk memperbaiki kualitas citra, OpenCV juga dapat digunakan untuk menggambar dan menulis. Kita dapat membuat window selayaknya canvas, kemudian kita dapat menggambar disana. Untuk membuat canvas menggunakan OpenCV, lakukan langkah-langkah berikut ini :
- Buat file Python baru dengan nama canvas
- Ketikan kode-kode program berikut ini
import cv2 import numpy as np img = np.zeros((640, 480, 3), np.uint8) cv2.imshow('Canvas', img) cv2.waitKey(0) cv2.destroyAllWindows()
- Jalankan kode program dengan cara menuliskan perintah python canvas.py atau dengan menekan tombol Run
Jika selama ini kita menggunakan file image untuk ditampilkan dalam jendela, maka pada kode program diatas kita memilih pendekatan berbeda. Kita akan membuat jendela kosong yang tidak mengandung citra dengan cara menulis kode program di bawah ini :
img = np.zeros((640, 480, 3), np.uint8)
Baris kode di atas digunakan untuk membuat kumpulan piksel di dalam area 640 (height) dan 480 (width) dengan jumlah channel 3 (RGB). Jendela kosong muncul karena kita menjalankan fungsi imshow() yang ada dibaris kode setelahnya. Pada numpy, np.zeros dipakai untuk membuat array baru yang diisi dengan angka 0 sebanyak 640 secara vertikal (height) dan 480 secara horizontal (width).
Karena berisi angka 0, maka jendela akan menghasilkan warna hitam. Dengan begitu jika kita ingin mendapatkan warna lain, misalnya warna putih, maka nilai di dalam img perlu ditambah dengan 255. Didalam konsep RGB, 255 di setiap channel akan menghasilkan warna putih.
Berikut kode untuk membuat canvas menjadi putih :
import cv2 import numpy as np img = np.zeros((640, 480, 3), np.uint8) putih += 255 cv2.imshow('Canvas', putih) cv2.waitKey(0) cv2.destroyAllWindows()
Setelah variabel kita tambahkan dengan 255, maka background canvas akan berubah menjadi putih.
Membuat Garis
Setelah berhasil membuat canvas, selanjutnya kita coba gambar canvas tersebut dengan garis (line). Sebelum menggambar garis, kita harus memahami fungsi dan atribut yang dipakai untuk mengambar garis tersebut. Struktur fungsi dan atribut yang digunakan untuk menggambar garis adalah sebagai berikut :
cv2.line(img(x1, y1), (x2, y2), (B, G, R), tebal)
- img = digunakan untuk menentukan dimana garis akan digambar
- x1, y1 = koordinat awal untuk membuat titik pertama garis
- x2, y2 = koordinat akhir untuk membuat titik akhir garis
- B, G, R = nilai antara 0 – 255 untuk membuat warna, BGR merupakan kembalikan dari RGB sehingga perlu membiasakan diri
- tebal = mengatur ketebalan garis
Berikut contoh penggunaan :
- Buat file python baru dengan nama garis.
- Ketikan kode-kode program berikut ini
import cv2 import numpy as np img = np.zeros((640, 480, 3), np.uint8) img += 255 line = cv2.line(img, (100,150), (300, 400), (0, 255, 0), 5) cv2.imshow('Canvas with Line', line) cv2.waitKey(0) cv2.destroyAllWindows()
- Jalankan kode program dengan cara menuliskan perintah python garis.py atau dengan menekan tombol Run
Menggambar Persegi
Objek kedua yang akan dibuat adalah persegi empat. Objek ini dibuat dengan menggunakan fungsi rectangle(). Adapun struktur fungsi rectangle() adalah sebagai berikut:
cv2.rectangle(img(x1, y1), (x2, y2), (B, G, R), tebal)
- img = digunakan untuk menentukan dimana persegi akan diletakan
- x1, y1 = koordinat sudut kiri atas persegi
- x2, y2 = koordinat sudut kanan bawah persegi
- B, G, R = nilai antara 0 – 255 untuk membuat warna, BGR merupakan kembalikan dari RGB sehingga perlu membiasakan diri
- tebal = mengatur ketebalan garis penyusun persegi
Langkah-langkah menggambar Persegi dengan OpenCV Python adalah sebagai berikut:
- Buat file python baru dengan nama persegi.
- Ketikan kode-kode program berikut ini
import cv2 import numpy as np canvas = np.zeros((640, 480, 3), np.uint8) canvas += 255 rectangle = cv2.rectangle(canvas, (150, 200), (350, 400), (255,0,0), 2) cv2.imshow('Canvas With Rectangle', rectangle) cv2.waitKey(0) cv2.destroyAllWindows()
- Jalankan kode program dengan cara menuliskan perintah python persegi.py atau dengan menekan tombol Run
Menggambar Lingkaran dan Elips
Lingkaran adalah objek yang garis contour-nya menutup sempurna, sedangkan elips tidak. Pembuatan lingkaran dapat dilakukan dengan menggunakan circle(). Sementara untuk membuat elips, dapat menggunakan fungsi ellipse().
Struktur fungsi circle adalah sebagai berikut.
cv2.circle(img,(x,y), radius, (B,G,R), tebal)
- x, y = Menunjukan titik tengah lingkaran pada sumbu x dan y
- radius = Menunjukan radius (luas) lingkaran
sedangkan untuk elips, struktur fungsinya adalah sebagai berikut.
cv2.ellipse(img,(x,y), (minorAxes, majorAxes), rotation, angel1, angel2, (B,G,R), tebal)
- x, y = koordinat titik tengah elips
- minorAxes, majorAxes = panjang sumbu kecil dan besar
- rotation = sudut perputaran elips dihitung berlawanan arah jarum jam
- angle1= sudut awal (dihitung searah jarum jam)
- angle2 = sudut akhir (dihitung searah jarum jam)
Berikut contoh kode program yang dibuat untuk menggambarkan lingkaran dan elips.
- Buat file python baru dengan nama lingkaran-elips
- Ketikan kode-kode program berikut ini
import cv2 import numpy as np canvas = np.zeros((640, 480, 3), np.uint8) canvas += 255 img = cv2.circle(canvas, (220, 250), 80, (0, 255, 0), 4) img = cv2.ellipse(canvas, (300, 500), (100, 50), 45, 130, 270, (0,0,0), 4) cv2.imshow('Canvas with Circle', img) cv2.waitKey(0) cv2.destroyAllWindows()
- Jalankan kode program dengan cara menuliskan perintah python lingkaran-elips.py atau dengan menekan tombol Run