Maison  >  Article  >  développement back-end  >  Comment créer un curseur de palette de couleurs RVB en utilisant OpenCV Python ?

Comment créer un curseur de palette de couleurs RVB en utilisant OpenCV Python ?

WBOY
WBOYavant
2023-08-30 16:33:01587parcourir

Dans OpenCV, vous pouvez utiliser la fonction cv2.reateTrackbar() pour créer une barre de suivi. Pour accéder à la valeur de la position sélectionnée de la trackbar, nous utilisons la fonction cv2.getTrackbarPos().

À l'aide de ces deux fonctions, nous créons une fenêtre contenant une barre de suivi pour les couleurs R, G, B et une fenêtre de couleur pour afficher la couleur sélectionnée. En changeant la position de la barre de suivi, la couleur RGB change entre 0 et 255. Voir la syntaxe de ces deux fonctions ci-dessous.

Grammaire

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

Paramètres

  • trackbar_name - Ceci est le nom de la barre de suivi. Ce nom est utilisé pour accéder à la valeur de position de la barre de suivi.

  • window_name - C'est le nom de la fenêtre à laquelle la barre de suivi est attachée.

  • default_value - La valeur par défaut définie pour la barre de suivi.

  • max_value - La valeur maximale de la barre de suivi.

  • callback_func - Fonction exécutée lorsque la valeur de la barre de suivi change.

Étapes

Pour créer une barre de suivi Palette RVB, vous pouvez suivre les étapes ci-dessous -

La première étape consiste à importer les bibliothèques requises. Les bibliothèques Python requises sont OpenCV et NumPy. Assurez-vous de les avoir installés.

import cv2
import numpy as np

Ensuite, définissez une fonction de rappel. Il prend la position de la barre de suivi comme paramètre par défaut. Nous définissons cette fonction pour ne rien faire.

def nothing(x):
   pass

Définissez l'image noire et créez une fenêtre appelée Trackbar Color Palette. La barre de suivi et les couleurs apparaîtront dans cette fenêtre.

img = np.zeros((300,650,3), np.uint8)
window_name = 'Trackbar Color Palette'
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)

Créez une barre de suivi pour les changements de couleur avec les cinq paramètres. Les valeurs de la barre de suivi vont de 0 à 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)

Obtenez la position actuelle de la barre de suivi pour les trois couleurs RVB .

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

Fenêtre d'image couleur mise à jour avec les couleurs ci-dessus.

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

Affiche maintenant la couleur de la valeur de la barre de piste sélectionnée dans la fenêtre de couleur.

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

Exemple 1

Dans le programme Python ci-dessous, nous créons une fenêtre sous forme de palette. Nous avons créé trois barres de suivi pour les couleurs R, V et B. Faites glisser le curseur pour afficher la couleur correspondante dans la fenêtre des couleurs.

# 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

Lorsque vous exécutez le programme ci-dessus, vous verrez la fenêtre Output suivante. Pour fermer la fenêtre de sortie, appuyez sur le bouton "q".

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

La valeur par défaut des trois barres de suivi est zéro et la couleur de la fenêtre est noire. Faites glisser le curseur pour voir la couleur correspondante dans la fenêtre de couleur.

Exemple 2

Dans ce programme, nous créons une fenêtre sous forme de palette avec un bouton toggle.

Nous avons créé quatre barres de suivi, trois pour les couleurs R, G, B et une pour le bouton toggle.

Lorsque le bouton switch est ON, seules les couleurs de la fenêtre de couleur sont affichées. Faites glisser le curseur et la couleur correspondante sera affichée dans la fenêtre de couleur.

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

Sortie

Lorsque vous exécutez le programme ci-dessus, il affichera la fenêtre de sortie suivante. Pour fermer la fenêtre output, appuyez sur le bouton "q".

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

La valeur par défaut de toutes les barres de piste est 0. La couleur des fenêtres est noire. Lorsque vous allumez l'interrupteur (sélectionnez 1) et faites glisser le curseur de couleur RGB sur la valeur souhaitée, la fenêtre de couleur affichera la couleur correspondante.

Si vous faites glisser le curseur lorsque l'interrupteur est éteint (réglé sur 0), la couleur de la fenêtre ne changera pas. Il restera tel quel (c'est-à-dire noir).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer