rcodina commited on
Commit
803aa9a
verified
1 Parent(s): d483bb6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +94 -94
app.py CHANGED
@@ -1,95 +1,95 @@
1
- import gradio as gr
2
- from PIL import Image, ImageDraw, ImageFont
3
- from io import BytesIO
4
- import boto3
5
-
6
- aws_access_key_id="ASIATKZWHQXR3GIFNWXP"
7
- aws_secret_access_key="AIFIEEtDPiu2CQ8jGzH3b64HvltAcXW43TKwVHu6"
8
- aws_session_token="IQoJb3JpZ2luX2VjEPr//////////wEaCXVzLXdlc3QtMiJIMEYCIQDqhebksoGudG3oAPyv25zEiDmnKizqdYK0hBeYcn12VQIhAL/Id52ZcO7usB7m1sAKYQSbljYRToblKHsy7c2iEXqbKq8CCEMQABoMMjI5MzU3NjE4NjU5IgyLkpI2HHlw8sZwdEMqjAKT+6BHbNouiNmAYkJTKyN6H0NATeEBZydNsjD90xDJdVd68GSTKLG+5vTrg0jwfcSBvdlXz0bzdwwar5qLXoBeK+UoQhSX+x01zSydjwxBqjZeYYnAJuQuQvGdCXM+hrJlFXwwVQRXO8F8SkjH544aN2Vuljmno99Vsu94bubuSHZ5UZIpQF8IdFQe4HqOfxfs7ZEP7vOqKT0XO5PnYw9Vo/tk0OmED/UahKVTdP1d7KdvERPsgoLGy5Gx8hflV4BdFDapDuw9mK1hrepZrNXS5x0cc5qPumc57+VczSNOFyYhbPo3z9VRc+SJSncRqG92MFKxkMwR6/hgTOzU/kUispDkazisF7mjRI6FMNSm37cGOpwBRuTL1lmTJ3KN5kwNccqLsJ7fyAtptv0/1p9EcRCrLDocw75Bz9ytMgUFyWXzWlB5Hz/ZiyTYpCnXP708sqbCnTw2HnVRhgL3oPxpKyAPiPQKBMulFxCygEY7yvYqS886eJFGIsTvmJs9DaFIRWOSlSuT3eylIpusRbjdiEAriSs2CwTuT2x+v7sUdOUMStmwPucy2DqSvsJslDhH"
9
-
10
- BUCKET_NAME = "ioc1980"
11
- nom_arxiu = 'imatge.jpg'
12
-
13
- s3 = boto3.client(
14
- 's3',
15
- aws_access_key_id=aws_access_key_id,
16
- aws_secret_access_key=aws_secret_access_key,
17
- aws_session_token=aws_session_token,
18
- region_name='us-east-1'
19
- )
20
- rekognition = boto3.client(
21
- 'rekognition',
22
- aws_access_key_id=aws_access_key_id,
23
- aws_secret_access_key=aws_secret_access_key,
24
- aws_session_token=aws_session_token,
25
- region_name='us-east-1'
26
- )
27
-
28
- def analitzar_imatge(imatge):
29
- # Pujar la imatge a S3
30
- s3.upload_file(imatge, BUCKET_NAME, nom_arxiu)
31
-
32
- # Analitzar la imatge amb Rekognition
33
- response = rekognition.detect_faces(
34
- Image={
35
- 'S3Object':{
36
- 'Bucket':BUCKET_NAME,
37
- 'Name':nom_arxiu
38
- }
39
- },
40
- Attributes=['ALL'])
41
-
42
- # Descarrega la imatge per dibuixar
43
- image_file = s3.get_object(Bucket=BUCKET_NAME, Key=nom_arxiu)
44
- image_bytes = image_file['Body'].read()
45
- image = Image.open(BytesIO(image_bytes))
46
-
47
- # Crear un objecte ImageDraw
48
- draw = ImageDraw.Draw(image)
49
-
50
- # Processar els resultats i dibuixar les capses
51
- resultats = []
52
- for i, face in enumerate(response['FaceDetails'], 1):
53
- # Obtenir informaci贸 de cada cara
54
- resultats.append(f"\nCara {i}:")
55
- resultats.append(f" Edat: {face['AgeRange']['Low']}-{face['AgeRange']['High']} anys")
56
- resultats.append(f" G猫nere: {face['Gender']['Value']}")
57
- resultats.append(f" Emoci贸: {max(face['Emotions'], key=lambda x: x['Confidence'])['Type']}")
58
-
59
- # Obtenir les coordenades de la caixa delimitadora
60
- bounding_box = face["BoundingBox"]
61
- left = int(bounding_box["Left"] * image.width)
62
- top = int(bounding_box["Top"] * image.height)
63
- width = int(bounding_box["Width"] * image.width)
64
- height = int(bounding_box["Height"] * image.height)
65
-
66
- # Dibuixar el quadre delimitador i l'etiqueta
67
- draw.rectangle([left, top, left + width, top + height], outline="red", width=2)
68
- draw.text((left, top - 25), f"Cara {i}", fill="red")
69
-
70
- # Eliminar la imatge de S3 despr茅s de l'an脿lisi
71
- s3.delete_object(Bucket=BUCKET_NAME, Key=nom_arxiu)
72
-
73
- return "\n".join(resultats) if resultats else "No s'han detectat cares a la imatge.", image
74
-
75
- # Crear la interf铆cie amb Gradio Blocks
76
- with gr.Blocks() as demo:
77
- gr.Markdown("# Aplicaci贸 de Detecci贸 de Cares amb Amazon Rekognition")
78
-
79
- # Definim un bloc de columna per al layout de la interf铆cie
80
- with gr.Row():
81
- with gr.Column():
82
- imatge_input = gr.Image(type='filepath', label="Puja una imatge")
83
- with gr.Column():
84
- resultats_text = gr.Textbox(label="Resultats")
85
-
86
- # Imatge de sortida amb capses dibuixades
87
- imatge_output = gr.Image(label="Imatge processada")
88
-
89
- # Defineix qu猫 passa autom脿ticament quan l'usuari puja una imatge
90
- imatge_input.change(fn=analitzar_imatge,
91
- inputs=imatge_input,
92
- outputs=[resultats_text, imatge_output])
93
-
94
- # Executar l'aplicaci贸
95
  demo.launch()
 
1
+ import gradio as gr
2
+ from PIL import Image, ImageDraw, ImageFont
3
+ from io import BytesIO
4
+ import boto3
5
+
6
+ aws_access_key_id="ASIATKZWHQXR3GIFNWXP"
7
+ aws_secret_access_key="AIFIEEtDPiu2CQ8jGzH3b64HvltAcXW43TKwVHu6"
8
+ aws_session_token="IQoJb3JpZ2luX2VjEPr//////////wEaCXVzLXdlc3QtMiJIMEYCIQDqhebksoGudG3oAPyv25zEiDmnKizqdYK0hBeYcn12VQIhAL/Id52ZcO7usB7m1sAKYQSbljYRToblKHsy7c2iEXqbKq8CCEMQABoMMjI5MzU3NjE4NjU5IgyLkpI2HHlw8sZwdEMqjAKT+6BHbNouiNmAYkJTKyN6H0NATeEBZydNsjD90xDJdVd68GSTKLG+5vTrg0jwfcSBvdlXz0bzdwwar5qLXoBeK+UoQhSX+x01zSydjwxBqjZeYYnAJuQuQvGdCXM+hrJlFXwwVQRXO8F8SkjH544aN2Vuljmno99Vsu94bubuSHZ5UZIpQF8IdFQe4HqOfxfs7ZEP7vOqKT0XO5PnYw9Vo/tk0OmED/UahKVTdP1d7KdvERPsgoLGy5Gx8hflV4BdFDapDuw9mK1hrepZrNXS5x0cc5qPumc57+VczSNOFyYhbPo3z9VRc+SJSncRqG92MFKxkMwR6/hgTOzU/kUispDkazisF7mjRI6FMNSm37cGOpwBRuTL1lmTJ3KN5kwNccqLsJ7fyAtptv0/1p9EcRCrLDocw75Bz9ytMgUFyWXzWlB5Hz/ZiyTYpCnXP708sqbCnTw2HnVRhgL3oPxpKyAPiPQKBMulFxCygEY7yvYqS886eJFGIsTvmJs9DaFIRWOSlSuT3eylIpusRbjdiEAriSs2CwTuT2x+v7sUdOUMStmwPucy2DqSvsJslDhH"
9
+
10
+ BUCKET_NAME = "ioc1980"
11
+ nom_arxiu = 'imatge.jpg'
12
+
13
+ s3 = boto3.client(
14
+ 's3',
15
+ aws_access_key_id=aws_access_key_id,
16
+ aws_secret_access_key=aws_secret_access_key,
17
+ aws_session_token=aws_session_token,
18
+ region_name='us-east-1'
19
+ )
20
+ rekognition = boto3.client(
21
+ 'rekognition',
22
+ aws_access_key_id=aws_access_key_id,
23
+ aws_secret_access_key=aws_secret_access_key,
24
+ aws_session_token=aws_session_token,
25
+ region_name='us-east-1'
26
+ )
27
+
28
+ def analitzar_imatge(imatge):
29
+ # Pujar la imatge a S3
30
+ s3.upload_file(imatge, BUCKET_NAME, nom_arxiu)
31
+
32
+ # Analitzar la imatge amb Rekognition
33
+ response = rekognition.detect_faces(
34
+ Image={
35
+ 'S3Object':{
36
+ 'Bucket':BUCKET_NAME,
37
+ 'Name':nom_arxiu
38
+ }
39
+ },
40
+ Attributes=['ALL'])
41
+
42
+ # Descarrega la imatge per dibuixar
43
+ image_file = s3.get_object(Bucket=BUCKET_NAME, Key=nom_arxiu)
44
+ image_bytes = image_file['Body'].read()
45
+ image = Image.open(BytesIO(image_bytes))
46
+
47
+ # Crear un objecte ImageDraw
48
+ draw = ImageDraw.Draw(image)
49
+
50
+ # Processar els resultats i dibuixar les capses
51
+ resultats = []
52
+ for i, face in enumerate(response['FaceDetails'], 1):
53
+ # Obtenir informaci贸 de cada cara
54
+ resultats.append(f"\nCara {i}:")
55
+ resultats.append(f" Edat: {face['AgeRange']['Low']}-{face['AgeRange']['High']} anys")
56
+ resultats.append(f" G猫nere: {face['Gender']['Value']}")
57
+ resultats.append(f" Emoci贸: {max(face['Emotions'], key=lambda x: x['Confidence'])['Type']}")
58
+
59
+ # Obtenir les coordenades de la caixa delimitadora
60
+ bounding_box = face["BoundingBox"]
61
+ left = int(bounding_box["Left"] * image.width)
62
+ top = int(bounding_box["Top"] * image.height)
63
+ width = int(bounding_box["Width"] * image.width)
64
+ height = int(bounding_box["Height"] * image.height)
65
+
66
+ # Dibuixar el quadre delimitador i l'etiqueta
67
+ draw.rectangle([left, top, left + width, top + height], outline="red", width=2)
68
+ draw.text((left, top - 25), f"Cara {i}", fill="red")
69
+
70
+ # Eliminar la imatge de S3 despr茅s de l'an脿lisi
71
+ s3.delete_object(Bucket=BUCKET_NAME, Key=nom_arxiu)
72
+
73
+ return "\n".join(resultats) if resultats else "No s'han detectat cares a la imatge.", image
74
+
75
+ # Crear la interf铆cie amb Gradio Blocks
76
+ with gr.Blocks() as demo:
77
+ gr.Markdown("# An脿lisi de cares amb Amazon Rekognition")
78
+
79
+ # Definim un bloc de columna per al layout de la interf铆cie
80
+ with gr.Row():
81
+ with gr.Column():
82
+ imatge_input = gr.Image(type='filepath', label="Puja una imatge")
83
+ with gr.Column():
84
+ resultats_text = gr.Textbox(label="Resultats")
85
+
86
+ # Imatge de sortida amb capses dibuixades
87
+ imatge_output = gr.Image(label="Imatge processada")
88
+
89
+ # Defineix qu猫 passa autom脿ticament quan l'usuari puja una imatge
90
+ imatge_input.change(fn=analitzar_imatge,
91
+ inputs=imatge_input,
92
+ outputs=[resultats_text, imatge_output])
93
+
94
+ # Executar l'aplicaci贸
95
  demo.launch()