Bonjour,
J'aimerais obtenir de l'aide pour améliorer ce code.
import cv2
import numpy as np
import pyautogui
import tkinter as tk
from PIL import Image, ImageTk
def filter_color(frame):
Convertir l'image en espace de couleur HSVhsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# Définir les limites inférieures et supérieures pour la plage de couleurs spécifiée
lower_bound = np.array([130, 50, 50])
upper_bound = np.array([150, 255, 255])
# Créer un masque pour la plage de couleurs spécifiée
mask = cv2.inRange(hsv_frame, lower_bound, upper_bound)
# Appliquer le masque à l'image d'origine pour isoler la plage de couleurs spécifiée
target_color_mask = cv2.bitwise_and(frame, frame, mask=mask)
# Désaturer les autres pixels de couleur
desaturated_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
colored_mask = cv2.cvtColor(desaturated_frame, cv2.COLOR_GRAY2BGR)
# Combiner l'image filtrée avec les pixels désaturés
result = cv2.addWeighted(target_color_mask, 1, colored_mask, 0.7, 0)
return result
def start_capture():
while True:
screenshot = pyautogui.screenshot()
# Convertir l'image en tableau numpy
frame = np.array(screenshot)
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
# Appliquer le filtre de couleur
filtered_frame = filter_color(frame)
# Convertir l'image OpenCV en format compatible avec Tkinter
filtered_frame_rgb = cv2.cvtColor(filtered_frame, cv2.COLOR_BGR2RGB)
filtered_frame_pil = Image.fromarray(filtered_frame_rgb)
filtered_frame_tk = ImageTk.PhotoImage(image=filtered_frame_pil)
# Mettre à jour l'affichage dans la fenêtre Tkinter
label.config(image=filtered_frame_tk)
label.image = filtered_frame_tk
# Rafraîchir la fenêtre Tkinter
root.update()
# Quitter si la touche 'q' est pressée
if cv2.waitKey(1) & 0xFF == ord('q'):
break
Créer une fenêtre Tkinter
root = tk.Tk()
root.title("Filtered Screen")
start_button = tk.Button(root, text="Start", command=start_capture)
start_button.pack()
label = tk.Label(root)
label.pack()
root.mainloop()
mon filtre fonctionne bien mais c'est la vitesse qui m'embete, je voudrais avoir un filtre en temps reel comme les filtres NVIDIA mais le miens est trop "lent" comment rendre ce filtre plus optimisé et surtout comment l'appliquer sans passer par une fenetre de capture