pengertian hsv adalah model yang mewakili ruang warna yang mirip dengan model warna RGB. Karena saluran hue memodelkan jenis warna, ini sangat berguna dalam tugas pemrosesan gambar yang perlu menyegmentasikan objek berdasarkan warnanya. Variasi saturasi berubah dari tidak jenuh menjadi warna abu-abu dan jenuh penuh (tanpa komponen putih). Value channel menggambarkan kecerahan atau intensitas warna. Gambar berikutnya menunjukkan silinder HSV.
Karena warna dalam ruang warna RGB dikodekan menggunakan tiga saluran, maka lebih sulit untuk menyegmentasikan objek dalam gambar berdasarkan warnanya.
untuk konversi warna kita akan menggunakan fungsi cv2.cvtColor(input_image, flag)dimana flag menentukan conversi
untuk konversi bgr>gray kita menggunakan flag cv2.COLOR_BGR2GRAY
. untuk bgr > hsv kita menggunakan cv2.COLOR_BGR2HSV
sebenernya ada banyak flag dari cv2 untuk konvert ke lainnya untuk mengetahui apa aja yang ada kamu bisa run kode di terminal python kamu dengan kode ini
>>import cv2
>>flags = [i for i in dir(cv2) if i.startswith('COLOR_')]
>>print flags
Untuk HSV, Hue range [0,179], Saturation range [0,255] dan Value range [0,255]. Perangkat lunak yang berbeda menggunakan skala yang berbeda. Jadi jika Anda membandingkan nilai OpenCV dengan mereka, Anda perlu menormalkan rentang ini.
Object Tracking
>Rekam setiap frame video
>Konversi dari BGR ke ruang warna HSV
>Kami membatasi citra HSV untuk rentang warna biru
>Sekarang ekstrak objek biru saja, kita dapat melakukan apapun pada gambar yang kita inginkan.
kode program sebagai contoh
import cv2
import numpy as np
cap = cv2.VideoCapture(0)#ambil vidio
while(1):
# Take each frame
_, frame = cap.read()#ambilperframe
# Convert BGR to HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# define range of blue color in HSV
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
# Threshold the HSV image to get only blue colors
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(frame,frame, mask= mask)
cv2.imshow('frame',frame)
cv2.imshow('mask',mask)
cv2.imshow('res',res)
k = cv2.waitKey(5) & 0xFF
if k == 2:
break
cv2.destroyAllWindows()
gambar kira2 akan seperti ini
- [0, 0, 0], [255, 255, 150] – Hitam
- [0, 100, 100], [3, 255, 255] – Merah
- [4, 100, 100], [18, 255, 255] – Orange
- [20, 100, 100], [40, 255, 255] – Kuning
- [50, 100, 100], [70, 255, 255] – Hijau
- [100, 100, 100], [120, 255, 255] – Biru
- [120, 100, 100], [140, 255, 255] – Ungu
- [0, 0, 0], [255, 255, 140] – Abu-Abu
- [0, 0, 0], [255, 255, 200] – Putih
- [14, 100, 100], [34, 255, 140] – Emas
- [0, 0, 0], [255, 255, 120] – Silver
[[[ 60 255 255]]]
Sekarang Anda mengambil [H-10, 100.100] dan [H + 10, 255, 255]
sebagai batas bawah dan batas atas. Selain metode ini, Anda
dapat menggunakan alat pengeditan gambar apa pun seperti GIMP
atau konverter online apa pun untuk menemukan nilai ini, tetapi
jangan lupa untuk menyesuaikan rentang HSV.
cap = cv2.VideoCapture(0)#ambil vidio
_, frame = cap.read()#ambilperframe
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # Convert BGR to HSV
lower_blue = np.array([110,50,50]) # define range of blue color in HSV
upper_blue = np.array([130,255,255])
mask = cv2.inRange(hsv, lower_blue, upper_blue) # Threshold the HSV image to get only blue colors
res = cv2.bitwise_and(frame,frame, mask= mask) # Bitwise-AND mask and original image
cv2.imshow('frame',frame)#menampilkan gambar
cv2.imshow('mask',mask)
cv2.imshow('res',res)
Tidak ada komentar:
Posting Komentar