# Con tres deslizadores en la parte superior de la ventana # se crean círculos de intensidad variable de colores rojo, verde y azul. # La mezcla genera cyan, magenta y amarillo con lo que al final se # otienen los RGB y los CMY ademas del blanco W y del negro K import cv2, numpy as np def dibuja(nada): # esta función se ejecuta automáticamente cada vez que se mueve # uno cualquiersa de los deslizadores global imagen # modifica la imagen, debe global # se obtiene la posición de cada uno de los deslizadores nivel_B=cv2.getTrackbarPos("B","imagen") nivel_G=cv2.getTrackbarPos("G","imagen") nivel_R=cv2.getTrackbarPos("R","imagen") # se separan las tres bandar RGB de la imagen en color banda_B,banda_G,banda_R=cv2.split(imagen) # alternativa con slicing del numpy # banda_B=imagen[:,:,0].copy() # banda_G=imagen[:,:,1].copy() # banda_R=imagen[:,:,2].copy() # se dibuja un círculo relleno con su nivel en cada banda cv2.circle(banda_B,centro_B,radio,nivel_B,-1) cv2.circle(banda_G,centro_G,radio,nivel_G,-1) cv2.circle(banda_R,centro_R,radio,nivel_R,-1) # se compone la nueva imagen en color a partir de las tres bandas imagen=cv2.merge([banda_B,banda_G,banda_R]) # alternativa con numpy # imagen=np.stack([banda_B,banda_G,banda_R],2) # se muestra la imagen en su ventana cv2.imshow("imagen",imagen) # programa principal # lado de la imagen, radio y centros de los círculos lado=800 radio=lado//3 centro_B=lado//2,lado//3 centro_G=lado//3,2*lado//3 centro_R=2*lado//3,2*lado//3 # se crea y muestra una imagen negra imagen=np.zeros((lado,lado,3),np.uint8) cv2.imshow("imagen",imagen) # se añaden tres deslizadores indicando la función a ejecutar # cada vez que se mueva uno cualquiera de ellos cv2.createTrackbar("B","imagen",0,255,dibuja) cv2.createTrackbar("G","imagen",0,255,dibuja) cv2.createTrackbar("R","imagen",0,255,dibuja) # pulsar cualquier tecla para finalizar cv2.waitKey(0) cv2.destroyAllWindows()