Exercice 2¶

Table des matières

  • Gestion du dessin
  • Gestion des sliders
  • Le programme principal
In [ ]:
import cv2
import numpy as np
import matplotlib.pyplot as plt

largeur = 100
hauteur = 50
dessin = False
image = None
couleur = [0,0,0]

Gestion du dessin¶

In [ ]:
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,largeur,hauteur):
    image[...] = couleur
    xmin = int((image.shape[1]-largeur)/2)
    xmax = int((image.shape[1]+largeur)/2)
    ymin = int((image.shape[0]-hauteur)/2)
    ymax = int((image.shape[0]+hauteur)/2)
    image[ymin:ymax,xmin:xmax] = np.random.randint(0, 255,3,np.uint8)
    return image

def effacerRectangle(image,largeur,hauteur):
    image[...] = couleur
    return image

Gestion des sliders¶

In [ ]:
def setLargeur(v):
    global largeur, image
    largeur = v
    if dessin:
        image = remplirRectangle(image,largeur,hauteur)
        cv2.imshow('image originale',image)

def setHauteur(v):
    global hauteur, image
    hauteur = v
    if dessin:
        image = remplirRectangle(image,largeur,hauteur)
        cv2.imshow('image originale',image)

Le programme principal¶

In [ ]:
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.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)
        if dessin:
            remplirRectangle(image,largeur,hauteur)
        cv2.imshow('image originale',image)
    if key ==ord('c'):
        image = remplirCouleur(image)
        if dessin:
            image = remplirRectangle(image,largeur,hauteur)
        cv2.imshow('image originale',image)
    if key ==ord('r'):
        dessin = not dessin
        if dessin:
            image = remplirRectangle(image,largeur,hauteur)
        else:
            image = effacerRectangle(image,largeur,hauteur)
        cv2.imshow('image originale',image)

print('arrêt du programme par l\'utilisateur')
cv2.destroyWindow('image originale')
arrêt du programme par l'utilisateur