11import tkinter as tk
22from tkinter import filedialog
3+ import numpy as np
34import cv2
45
56imgOrigin = None
67img = None
7- file_path = None
8+ imgPath = None
89
9- def case_original ():
10+ def load_img ():
1011 # Abre a caixa de diálogo para seleção do arquivo
11- global imgOrigin , img , file_path
12- file_path = filedialog .askopenfilename ()
13- if file_path :
14- img = cv2 .imread (file_path )
12+ global imgOrigin , img , imgPath
13+ imgPath = filedialog .askopenfilename ()
14+ if imgPath :
15+ img = cv2 .imread (imgPath )
1516 if img is not None :
17+ print ('Original' )
1618 cv2 .imshow ('Original' , img )
1719 cv2 .waitKey (0 )
1820 cv2 .destroyAllWindows ()
1921 else :
2022 print ('Erro ao carregar a imagem' )
21- else :
22- print ('Nenhum arquivo selecionado' )
23+
2324
24- def case_gray ():
25+ def gray_color ():
2526 # Abre a caixa de diálogo para seleção do arquivo
26- global imgOrigin , img , file_path
27- file_path = filedialog .askopenfilename ()
28- if file_path :
29- img = cv2 .imread (file_path , cv2 .IMREAD_GRAYSCALE )
27+ global imgOrigin , img , imgPath
28+ imgPath = filedialog .askopenfilename ()
29+ if imgPath :
30+ img = cv2 .imread (imgPath , cv2 .IMREAD_GRAYSCALE )
3031 if img is not None :
31- cv2 .imshow ('Cinza' , img )
32+ print ('Gray' )
33+ cv2 .imshow ('Gray' , img )
3234 cv2 .waitKey (0 )
3335 cv2 .destroyAllWindows ()
3436 else :
3537 print ('Erro ao carregar a imagem' )
36- else :
37- print ('Nenhum arquivo selecionado' )
38+
3839
40+ def binary_color ():
41+ # Abre a caixa de diálogo para seleção do arquivo
42+ global imgOrigin , img , imgPath
43+ imgPath = filedialog .askopenfilename ()
44+ if imgPath :
45+ img = cv2 .imread (imgPath , cv2 .IMREAD_GRAYSCALE )
46+ if img is not None :
47+
48+ threshold = 128
49+
50+ ret , binary = cv2 .threshold (img , threshold , 255 , cv2 .THRESH_BINARY )
51+
52+ # Exibe a imagem binarizada
53+ print ('Binary' )
54+ cv2 .imshow ('Binário' , binary )
55+ cv2 .waitKey (0 )
56+ cv2 .destroyAllWindows ()
57+
58+
59+ def gaussian_filter ():
60+ # Abre a caixa de diálogo para seleção do arquivo
61+ global imgOrigin , img , imgPath
62+ imgPath = filedialog .askopenfilename ()
63+ if imgPath :
64+ img = cv2 .imread (imgPath )
65+ if img is not None :
66+ kernelSize = (3 , 3 )
67+ standardDeviation = 0
68+ gaussian = cv2 .GaussianBlur (img , kernelSize , standardDeviation )
69+
70+
71+ print ('Gaussiana' )
72+ cv2 .imshow ('Gaussiana' , gaussian )
73+ cv2 .waitKey (0 )
74+ cv2 .destroyAllWindows ()
75+
76+
77+ def median_filter ():
78+ # Abre a caixa de diálogo para seleção do arquivo
79+ global imgOrigin , img , imgPath
80+ imgPath = filedialog .askopenfilename ()
81+ if imgPath :
82+ img = cv2 .imread (imgPath )
83+ if img is not None :
84+ median = cv2 .medianBlur (img , 3 )
85+
86+ print ('Mediana' )
87+ cv2 .imshow ('Mediana' , median )
88+ cv2 .waitKey (0 )
89+ cv2 .destroyAllWindows ()
90+
91+
92+ def canny_edge ():
93+ # Abre a caixa de diálogo para seleção do arquivo
94+ global imgOrigin , img , imgPath
95+ imgPath = filedialog .askopenfilename ()
96+ if imgPath :
97+ img = cv2 .imread (imgPath )
98+ if img is not None :
99+ img = cv2 .imread (imgPath , cv2 .IMREAD_GRAYSCALE )
100+ edges = cv2 .Canny (img , 100 , 200 )
101+
102+ # Define uma máscara preenchida com zeros
103+ mask = np .zeros_like (img )
104+
105+ # Preenche a máscara com valores brancos nos locais das bordas detectadas
106+ mask [edges != 0 ] = 255
107+
108+ # Exibe a detecção de bordas Canny
109+ print ('Canny' )
110+ cv2 .imshow ('Canny' , edges )
111+ cv2 .waitKey (0 )
112+ cv2 .destroyAllWindows ()
113+
114+
115+ def laplace_edge ():
116+ # Abre a caixa de diálogo para seleção do arquivo
117+ global imgOrigin , img , imgPath
118+ imgPath = filedialog .askopenfilename ()
119+ if imgPath :
120+ img = cv2 .imread (imgPath )
121+ if img is not None :
122+ laplacian = cv2 .Laplacian (img , cv2 .CV_8U , ksize = 3 )
123+
124+ print ('Laplacian' )
125+ cv2 .imshow ('Laplacian' , laplacian )
126+ cv2 .waitKey (0 )
127+ cv2 .destroyAllWindows ()
128+
129+
130+ def sobel_edge ():
131+ # Abre a caixa de diálogo para seleção do arquivo
132+ global imgOrigin , img , imgPath
133+ imgPath = filedialog .askopenfilename ()
134+ if imgPath :
135+ img = cv2 .imread (imgPath )
136+ if img is not None :
137+ img = cv2 .imread (imgPath , cv2 .IMREAD_GRAYSCALE )
138+
139+
140+ sobelX = cv2 .Sobel (img , cv2 .CV_64F , 1 , 0 , ksize = 3 )
141+ sobelY = cv2 .Sobel (img , cv2 .CV_64F , 0 , 1 , ksize = 3 )
142+
143+ # Calcula a magnitude das derivadas
144+ sobelMag = np .sqrt (sobelX ** 2 + sobelY ** 2 )
145+
146+ # Converte os valores para o intervalo de 0 a 255
147+ sobelMag = np .uint8 (sobelMag )
148+
149+ # Exibe as imagens de saída
150+ print ('Sobel' )
151+ cv2 .imshow ('Sobel X' , sobelX )
152+ cv2 .imshow ('Sobel Y' , sobelY )
153+ cv2 .imshow ('Magnitude do Sobel' , sobelMag )
154+ cv2 .waitKey (0 )
155+ cv2 .destroyAllWindows ()
0 commit comments