Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membuat peluncur palet warna HSV menggunakan OpenCV Python?

Bagaimana untuk membuat peluncur palet warna HSV menggunakan OpenCV Python?

WBOY
WBOYke hadapan
2023-08-18 13:53:041559semak imbas

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

Syntax

cv2.createTrackbar(trackbar_name, window_name, default_value, max_value, callback_func)
cv2.getTrackbarPos(trackbar_name, window_name)

Parameter:

  • 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.

Langkah

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

Contoh 1

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()

Output

Apabila anda menjalankan program di atas, ia akan memaparkan tetingkap output berikut. Untuk menutup tetingkap output, tekan butang ‘q’.

Bagaimana untuk membuat peluncur palet warna HSV menggunakan OpenCV Python?

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

Contoh 2

ialah:

Contoh 2

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()

Output

Apabila anda menjalankan program di atas, ia akan memaparkan tetingkap output berikut. Untuk menutup tetingkap output, tekan butang ‘q’.

Bagaimana untuk membuat peluncur palet warna HSV menggunakan OpenCV Python?

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam