import cv2
import numpy as np
import matplotlib.pyplot as plt
largeur = 100
hauteur = 50
posX = int(640/2)
posY = int(480/2)
dessin = False
image = None
couleur = [0,0,0]
def remplirNoir(image):
global couleur
couleur = [0,0,0]
image[...] = couleur
return image
def remplirCouleur(image):
global couleur
couleur = np.random.randint(0, 255,3,np.uint8)
image[...] = couleur
return image
def remplirRectangle(image,posx,posy,largeur,hauteur):
image[...] = couleur
xmin = max(0,int(posX-largeur/2))
xmax = min(image.shape[1],int(posx+largeur/2))
ymin = max(0,int(posy-hauteur/2))
ymax = min(image.shape[0],int(posy+hauteur/2))
image[ymin:ymax,xmin:xmax] = np.random.randint(0, 255,3,np.uint8)
return image
def setLargeur(v):
global largeur, image
largeur = v
if dessin:
image = remplirRectangle(image,posX,posY,largeur,hauteur)
cv2.imshow('image originale',image)
def setHauteur(v):
global hauteur, image
hauteur = v
if dessin:
image = remplirRectangle(image,posX,posY,largeur,hauteur)
cv2.imshow('image originale',image)
def evenementSouris(event,x,y,flags,data):
global posX, posY, image, dessin
if event==cv2.EVENT_LBUTTONUP:
posX = x
posY = y
dessin = True
image = remplirRectangle(image,posX,posY,largeur,hauteur)
cv2.imshow('image originale',image)
image = np.zeros((480,640,3), np.uint8)
cv2.namedWindow('image originale')
cv2.createTrackbar('Largeur','image originale',largeur,image.shape[1],setLargeur)
cv2.createTrackbar('Hauteur','image originale',hauteur,image.shape[0],setHauteur)
cv2.setMouseCallback('image originale',evenementSouris)
cv2.imshow('image originale',image)
while True:
key = cv2.waitKey(30) & 0x0FF
if key == 27 or key==ord('q'):
break;
if key ==ord('n'):
image = remplirNoir(image)
dessin = False
cv2.imshow('image originale',image)
if key ==ord('c'):
image = remplirCouleur(image)
dessin = False
cv2.imshow('image originale',image)
print('arrêt du programme par l\'utilisateur')
cv2.destroyWindow('image originale')
arrêt du programme par l'utilisateur