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

Bagaimana untuk membuat peluncur palet warna RGB menggunakan OpenCV Python?

WBOY
WBOYke hadapan
2023-08-30 16:33:01652semak imbas

Dalam OpenCV, anda boleh menggunakan fungsi cv2.reateTrackbar() untuk mencipta bar trek. Untuk mengakses nilai kedudukan bar jejak yang dipilih, kami menggunakan fungsi cv2.getTrackbarPos().

Menggunakan dua fungsi ini, kami mencipta tetingkap yang mengandungi bar penjejakan untuk warna R, G, B dan tetingkap warna untuk memaparkan warna yang dipilih. Dengan menukar kedudukan bar trek, warna RGB berubah antara 0 dan 255. Lihat sintaks kedua-dua fungsi ini di bawah.

Tatabahasa

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

Parameter

  • trackbar_name - Ini ialah nama trackbar. Nama ini digunakan untuk mengakses nilai kedudukan bar jejak.

  • window_name - Ini adalah nama tetingkap yang dilampirkan bar penjejakan.

  • default_value - Nilai lalai yang ditetapkan untuk bar jejak.

  • maks_nilai - Nilai maksimum bar trek.

  • callback_func - Fungsi dilaksanakan apabila nilai bar trek berubah.

Langkah

Untuk mencipta bar trek palet RGB, anda boleh mengikuti langkah yang diberikan di bawah -

Langkah pertama ialah mengimport perpustakaan yang diperlukan. Perpustakaan Python yang diperlukan ialah OpenCV dan NumPy. Pastikan anda memasangnya.

import cv2
import numpy as np

Seterusnya, tentukan fungsi panggil balik. Ia mengambil kedudukan bar jejak sebagai parameter lalai. Kami mentakrifkan fungsi ini untuk melakukan apa-apa.

def nothing(x):
   pass

Tentukan imej hitam dan buat tetingkap yang dipanggil Palet Warna Bar Jejak. 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 bar jejak untuk perubahan warna dengan semua lima parameter. Nilai bar jejak berjulat dari 0 hingga 255.

cv2.createTrackbar('R',window_name,0,255,nothing)
cv2.createTrackbar('G',window_name,0,255,nothing)
cv2.createTrackbar('B',window_name,0,255,nothing)

Dapatkan kedudukan bar jejak semasa untuk ketiga-tiga RGB warna.

r = cv2.getTrackbarPos('R',window_name)
g = cv2.getTrackbarPos('G',window_name)
b = cv2.getTrackbarPos('B',window_name)

Tetingkap imej berwarna dikemas kini dengan warna di atas.

img[:] = [b,g,r]

Kini menunjukkan warna nilai bar trek yang dipilih dalam tetingkap warna.

while(True):
   cv2.imshow(window_name,img)
   k = cv2.waitKey(1) & 0xFF
   if k == ord('q'):
      break

Contoh 1

Dalam program Python di bawah, kami mencipta tetingkap sebagai palet. Kami mencipta tiga bar trek untuk warna R, G dan B. Luncurkan peluncur untuk memaparkan warna yang sepadan dalam tetingkap warna.

# import required libraries
import cv2
import numpy as np

def nothing(x):
   pass
   
# Create a black image, and the window
img = np.zeros((300,650,3), np.uint8)
window_name = 'Trackbar Color Palette'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

# create trackbars for color change
cv2.createTrackbar('R',window_name,0,255,nothing)
cv2.createTrackbar('G',window_name,0,255,nothing)
cv2.createTrackbar('B',window_name,0,255,nothing)
while(True):
   cv2.imshow(window_name,img)
   k = cv2.waitKey(1) & 0xFF
   if k == ord('q'):
      break
      
   # get current positions of four trackbars
   r = cv2.getTrackbarPos('R',window_name)
   g = cv2.getTrackbarPos('G',window_name)
   b = cv2.getTrackbarPos('B',window_name)
   img[:] = [b,g,r]
 cv2.destroyAllWindows()

Output

Apabila anda menjalankan program di atas, anda akan melihat tetingkap Output berikut. Untuk menutup tetingkap output, tekan butang "q".

如何使用OpenCV Python创建一个RGB颜色调色板的滑动条?

Nilai lalai untuk ketiga-tiga bar trek ialah sifar dan warna tetingkap adalah hitam. Luncurkan peluncur untuk melihat warna yang sepadan dalam tetingkap warna.

Contoh 2

Dalam program ini kami mencipta tetingkap sebagai palet dengan butang togol.

Kami mencipta empat bar trek, tiga untuk warna R, G, B dan satu untuk butang togol.

Apabila butang suis HIDUP, hanya warna dalam tetingkap warna dipaparkan. Luncurkan peluncur dan warna yang sepadan akan dipaparkan 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)
window_name = 'Trackbar Color Palette'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

# create trackbars for color change
cv2.createTrackbar('R',window_name,0,255,nothing)
cv2.createTrackbar('G',window_name,0,255,nothing)
cv2.createTrackbar('B',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
   r = cv2.getTrackbarPos('R',window_name)
   g = cv2.getTrackbarPos('G',window_name)
   b = cv2.getTrackbarPos('B',window_name)
   s = cv2.getTrackbarPos("switch",window_name)
   if s == 0:
      img[:] = 0
   else:
      img[:] = [b,g,r]
cv2.destroyAllWindows()

Output

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

如何使用OpenCV Python创建一个RGB颜色调色板的滑动条?

Nilai lalai untuk semua bar trek ialah 0. Warna tingkap adalah hitam. Apabila anda menghidupkan suis (pilih 1) dan luncurkan peluncur warna RGB ke nilai yang dikehendaki, tetingkap warna akan memaparkan warna yang sepadan.

Jika anda meluncurkan peluncur apabila suis dimatikan (ditetapkan kepada 0), warna tetingkap tidak akan berubah. Ia akan kekal seperti sedia ada (iaitu hitam).

Atas ialah kandungan terperinci Bagaimana untuk membuat peluncur palet warna RGB 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