Modul Praktikum 1 - Computer Vision
Modul Praktikum 1 - Computer Vision
Membaca gambar
Periksa atribut gambar seperti tipe data dan bentuk
Representasi matriks dari sebuah gambar di Numpy
Gambar Berwarna dan saluran gambar pemisahan/penggabungan
Menampilkan gambar menggunakan matplotlib
Menyimpan gambar
Import Libraries
In [45]:
1 import cv2
2 import numpy as np
3 import matplotlib.pyplot as plt
4 %matplotlib inline
5 from IPython.display import Image
6
In [46]:
Out[46]:
In [47]:
Out[47]:
OpenCV memungkinkan membaca berbagai jenis citra (JPG, PNG, dll). Anda dapat memuat citra grayscale,
localhost:8888/notebooks/Modul Praktikum 1 - Computer Vision.ipynb 1/13
9/25/21, 10:51 AM Modul Praktikum 1 - Computer Vision - Jupyter Notebook
citra berwarna atau memuat citra dengan kanal Alpha. Ini menggunakan fungsi cv2.imread() yang memiliki
sintaks berikut:
Function Syntax
retval : Adalah citra jika berhasil dimuat. Jika tidak, Tidak Ada. Ini dapat terjadi jika nama file salah atau file
rusak.
Fungsi ini memiliki 1 argumen input yang diperlukan dan satu flag opsional:
1. filename : Ini bisa menjadi jalur absolut atau relatif. Ini adalah argumen wajib.
2. flags : flags ini digunakan untuk membaca citra dalam format tertentu (misalnya, grayscale/warna/dengan
kanal alfa). Ini adalah argumen opsional dengan nilai default cv2.IMREAD_COLOR atau 1 yang memuat
citra sebagai citra berwarna.
Sebelum kita melanjutkan dengan beberapa contoh, mari kita lihat juga beberapa flag yang tersedia.
Flags
In [48]:
[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]
[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]
[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]
[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]
[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]
[255 255 255 255 255 255 0 0 0 0 0 0 255 255 255 255 255 255]
In [49]:
In [50]:
1 # Display image.
2 plt.imshow(cb_img)
Out[50]:
<matplotlib.image.AxesImage at 0x7f6f3d236910>
Meskipun citra dibaca sebagai citra grayscale, itu tidak akan selalu ditampilkan dalam citra grayscale saat
menggunakan imshow(). matplotlib menggunakan peta warna yang berbeda dan mungkin saja peta warna
grayscale tidak disetel.
In [51]:
Out[51]:
<matplotlib.image.AxesImage at 0x7f6f3d19f310>
Contoh Lain
In [52]:
[132 129 131 124 121 163 211 226 227 225 226 203 164 125 125 129 131 131]
[234 227 230 229 232 205 151 115 125 124 117 156 205 232 229 225 228 228]
[254 255 255 251 255 222 102 1 0 0 0 120 225 255 254 255 255 255]
[254 255 254 255 253 225 104 0 50 46 0 120 233 254 247 253 251 253]
[252 250 250 253 254 223 105 2 45 50 0 127 223 255 251 255 251 253]
[254 255 255 252 255 226 104 0 1 1 0 120 229 255 255 254 255 255]
[233 235 231 233 234 207 142 106 108 102 108 146 207 235 237 232 231 231]
[132 132 131 132 130 175 207 223 224 224 224 210 165 134 130 136 134 134]
Out[52]:
<matplotlib.image.AxesImage at 0x7f6f3d186790>
In [31]:
Out[31]:
Mari kita baca citra berwarna dan memeriksa parameter serta dimensi citra.
In [32]:
1 # Membaca citra
2 coke_img = cv2.imread("/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/coca-cola-log
3
4 # Menampilkan size citra
5 print("Image size is ", coke_img.shape)
6
7 # Menampilkan tipe data
8 print("Data type of image is ", coke_img.dtype)
9
10 print("")
Menampilkan Citra
In [33]:
1 plt.imshow(coke_img)
2 # Apa yang terjadi?
Out[33]:
<matplotlib.image.AxesImage at 0x7f6f3f04cd50>
Warna yang ditampilkan di atas berbeda dari citra sebenarnya. Ini karena matplotlib mengharapkan citra dalam
format RGB sedangkan OpenCV menyimpan citra dalam format BGR. Jadi, untuk tampilan yang benar, kita
perlu membalik kanal citra.
In [34]:
Out[34]:
<matplotlib.image.AxesImage at 0x7f6f3dfc0550>
cv2.merge() Menggabungkan beberapa larik untuk membuat larik multisaluran tunggal. Semua matriks input
harus memiliki ukuran yang sama.
In [53]:
cv2.cvtColor() Mengonversi citra dari satu ruang warna ke ruang warna lainnya. Fungsi ini mengubah citra
masukan dari satu ruang warna ke ruang warna lainnya. Dalam kasus transformasi ke-dari ruang warna RGB,
urutan kanal harus ditentukan secara eksplisit (RGB atau BGR). Perhatikan bahwa format warna default di
OpenCV sering disebut sebagai RGB tetapi sebenarnya BGR (byte dibalik). Jadi byte pertama dalam citra
berwarna standar (24-bit) akan menjadi komponen Biru 8-bit, byte kedua akan menjadi Hijau, dan byte ketiga
akan menjadi Merah. Byte keempat, kelima, dan keenam akan menjadi piksel kedua (Biru, lalu Hijau, lalu
Merah), dan seterusnya.
Function Syntax
1. src citra input : 8-bit unsigned, 16-bit unsigned ( CV_16UC... ), atau floating-point presisi tunggal.
2. code : kode konversi ruang warna (lihat ColorConversionCodes).
In [54]:
1 # OpenCV menyimpan kanal warna dalam urutan yang berbeda dari kebanyakan aplikasi lain
2 img_NZ_rgb = cv2.cvtColor(img_NZ_bgr, cv2.COLOR_BGR2RGB)
3 plt.imshow(img_NZ_rgb)
Out[54]:
<matplotlib.image.AxesImage at 0x7f6f3d2cbd90>
In [55]:
In [56]:
1 h_new = h+10
2 img_NZ_merged = cv2.merge((h_new,s,v))
3 img_NZ_rgb = cv2.cvtColor(img_NZ_merged, cv2.COLOR_HSV2RGB)
4
5 # Menampilkan kanal warna
6 plt.figure(figsize=[20,5])
7 plt.subplot(141);plt.imshow(h,cmap='gray');plt.title("H Channel");
8 plt.subplot(142);plt.imshow(s,cmap='gray');plt.title("S Channel");
9 plt.subplot(143);plt.imshow(v,cmap='gray');plt.title("V Channel");
10 plt.subplot(144);plt.imshow(img_NZ_rgb);plt.title("Modified");
Menyimpan Citra
Menyimpan citra sama sepelenya dengan membaca citra di OpenCV. Kami menggunakan fungsi cv2.imwrite()
dengan dua argumen. Yang pertama adalah nama file, argumen kedua adalah objek citra.
Fungsi imwrite menyimpan citra ke file yang ditentukan. Format citra dipilih berdasarkan ekstensi nama file
(lihat cv::imread untuk daftar ekstensi). Secara umum, hanya citra kanal tunggal atau 3-saluran 8-bit (dengan
urutan kanal 'BGR') yang dapat disimpan menggunakan fungsi ini (lihat dokumentasi OpenCV untuk detail lebih
lanjut).
Function Syntax
In [57]:
1 # Menyimpan Citra
2 cv2.imwrite("/content/drive/MyDrive/Colab Notebooks/Pertemuan 1/New_Zealand_Lake_SAVED.
3
4 Image(filename='New_Zealand_Lake_SAVED.png')
Out[57]:
In [58]: