Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk membuat peluncur palet warna HSV menggunakan OpenCV Python?
Untuk mencipta peluncur bagi palet warna HSV (Hue, Saturation and Value) dalam OpenCV, kami menggunakan dua fungsi berbeza. Fungsi ini ialah cv2.reateTrackbar() dan cv2.getTrackbarPos().
Gunakan fungsi cv2.reateTrackbar() untuk mencipta bar gelangsar, manakala fungsi cv2.getTrackbarPos() digunakan untuk mengakses nilai kedudukan gelangsar yang dipilih.
Menggunakan dua fungsi ini, kami mencipta gelangsar yang mengandungi H, S, V warna dan tetingkap warna untuk memaparkan warna yang dipilih. Dengan menukar kedudukan peluncur, kita boleh memilih nilai warna tertentu.
H berjulat dari 0 hingga 179, manakala S dan V berjulat dari 0 hingga 255
cv2.createTrackbar(trackbar_name, window_name, default_value, max_value, callback_func) cv2.getTrackbarPos(trackbar_name, window_name)
trackbar_name − Ini adalah nama peluncur. Nama ini digunakan untuk mengakses nilai kedudukan peluncur.
window_name − Ia adalah nama tetingkap yang dilampirkan pada peluncur.
default_value − Tetapkan nilai lalai peluncur.
maks_nilai − Nilai maksimum peluncur.
callback_func − Fungsi dilaksanakan apabila nilai peluncur berubah.
Untuk mencipta peluncur sebagai Palet warna HSV anda boleh mengikuti langkah berikut:
Langkah pertama ialah mengimport perpustakaan yang diperlukan. Perpustakaan Python yang diperlukan ialah OpenCV dan NumPy. Sila pastikan anda telah memasangnya.
import cv2 import numpy as np
Seterusnya tentukan fungsi panggil balik. Ia mengambil kedudukan peluncur sebagai parameter lalai. Kami mentakrifkan fungsi ini untuk melakukan apa-apa.
def nothing(x): pass
Tentukan imej hitam dan buat tetingkap yang dipanggil HSV Color Palette. Bar trek dan warna akan muncul dalam tetingkap ini.
img = np.zeros((300,650,3), np.uint8) window_name = 'Trackbar Color Palette' cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)
Buat gelangsar menukar warna, melepasi semua lima parameter
cv2.createTrackbar('H',window_name,0,179,nothing) cv2.createTrackbar('S',window_name,0,255,nothing) cv2.createTrackbar('V',window_name,0,255,nothing)
Dapatkan kedudukan peluncur semasa untuk ketiga-tiga warna HSV.
h = cv2.getTrackbarPos('H',window_name) s = cv2.getTrackbarPos('S',window_name) v = cv2.getTrackbarPos('V',window_name)
Tetingkap imej warna yang dikemas kini dengan warna di atas. Dan tukarkan warna imej kepada BGR.
img[:] = [h,s,v] img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR)
Kini memaparkan warna nilai bar jejak yang dipilih dalam tetingkap imej berwarna.
while(True): cv2.imshow(window_name,img) k = cv2.waitKey(1) & 0xFF if k == ord('q'): break
Dalam program Python ini, kami mencipta tetingkap sebagai palet warna. Kami mencipta tiga peluncur untuk mengawal warna R, G dan B. Luncurkan peluncur dan anda akan mendapat paparan warna yang sepadan dalam tetingkap warna.
# import required libraries import cv2 import numpy as np def nothing(x): pass # Create a black image, a window img = np.zeros((300,650,3), np.uint8) img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) window_name = 'HSV Color Palette' cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE) # create trackbars for color change cv2.createTrackbar('H',window_name,0,179,nothing) cv2.createTrackbar('S',window_name,0,255,nothing) cv2.createTrackbar('V',window_name,0,255,nothing) while(True): cv2.imshow(window_name,img) key = cv2.waitKey(1) & 0xFF if key == ord('q'): break # get current positions of four trackbars h = cv2.getTrackbarPos('H',window_name) s = cv2.getTrackbarPos('S',window_name) v = cv2.getTrackbarPos('V',window_name) img[:] = [h,s,v] img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR) cv2.destroyAllWindows()
Apabila anda menjalankan program di atas, ia akan memaparkan tetingkap output berikut. Untuk menutup tetingkap output, tekan butang ‘q’.
Secara lalai, nilai tiga peluncur ialah 0 , dan warna tingkap adalah hitam. Luncurkan peluncur dan anda akan melihat warna yang sepadan dalam tetingkap warna. Terjemahan bahasa Cina
ialah:
Dalam program ini, kami mencipta tetingkap sebagai HSV palet warna, yang mengandungi butang suis. Kami mencipta empat peluncur, tiga untuk Warna HSV dan satu untuk butang Tukar.
Apabila butang suis dihidupkan , hanya warna dalam imej berwarna dipaparkan. Luncurkan peluncur dan anda akan mendapat paparan warna yang sepadan dalam tetingkap warna.
import cv2 import numpy as np def nothing(x): pass # Create a black image, a window img = np.zeros((300,650,3), np.uint8) img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) window_name = 'HSV Color Palette' cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE) # create trackbars for color change cv2.createTrackbar('H',window_name,0,179,nothing) cv2.createTrackbar('S',window_name,0,255,nothing) cv2.createTrackbar('V',window_name,0,255,nothing) # create switch for ON/OFF functionality # switch = '0 : OFF \n1 : ON' cv2.createTrackbar('switch', window_name,0,1,nothing) while(True): cv2.imshow(window_name,img) key = cv2.waitKey(1) & 0xFF if key == ord('q'): break # get current positions of four trackbars h = cv2.getTrackbarPos('H',window_name) s = cv2.getTrackbarPos('S',window_name) v = cv2.getTrackbarPos('V',window_name) sw = cv2.getTrackbarPos('switch',window_name) if sw == 0: img[:] = 0 else: img[:] = [h,s,v] img = cv2.cvtColor(img, cv2.COLOR_HSV2BGR) cv2.destroyAllWindows()
Apabila anda menjalankan program di atas, ia akan memaparkan tetingkap output berikut. Untuk menutup tetingkap output, tekan butang ‘q’.
Secara lalai, semua peluncur mempunyai nilai 0. Warna tingkap adalah hitam. Apabila anda menghidupkan suis (dipilih sebagai 1) dan luncurkan peluncur warna HSV ke nilai yang dikehendaki, warna tetingkap akan sepadan dengan nilai yang ditetapkan. Untuk warna terang, pilih nilai maksimum peluncur S dan V, dan luncurkan peluncur H.
Apabila suis dimatikan, gelongsor gelangsar tidak akan mengubah apa-apa
Jika anda gelongsor gelangsar apabila suis dimatikan (ditetapkan kepada 0), maka warna tetingkap tidak akan berubah. Ia akan kekal seperti sedia ada (iaitu hitam).
Atas ialah kandungan terperinci Bagaimana untuk membuat peluncur palet warna HSV menggunakan OpenCV Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!