Python - Centrar píxeles en tratamiento de imágenes

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 7 puestos en Python (en relación al último mes)
Gráfica de Python

Centrar píxeles en tratamiento de imágenes

Publicado por Pablo (1 intervención) el 31/12/2020 11:55:02
Hola, soy un estudiante y en una práctica me piden que haga una función que dibuje un rectángulo en una imagen que ellos me proporcionan, las entradas de la función son la imágen(img), una tupla con las coordenadas de la esquina superior izquierda e inferior derecha del rectángulo (x1,y1,x2,y2) y el color que le queramos poner al rectángulo. El problema está que me pide que el rectángulo se dibuje como podéis ver en la imagen adjuntada, tal que los píxeles del rectángulo estén centrados en los píxeles de la imagen pero a mi me salen de la forma que podeis ver en la otra imagen del rectángulo negro, como si se dibujaran de -0.5 a 0.5 en vez de de 0 a 1. Necesito cambiar eso y no se como. Espero haberme explicado bien, os dejo el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from imageio import imread, imwrite
from matplotlib.pyplot import imshow, figure, show
import numpy as np
img = imread('img/ants.png')
imwrite('resultado.png', img)
 
def forma(a,l,c):  #función que hace formas cuadradas y rectangulares (ancho,largo,color)
    return np.full((a,l,3),c)
 
def draw_rect(img,r,col):
    img[r[1],r[0]:r[2]]=forma(1,r[2]-r[0],col)  #lado superior
    img[r[3]-1,r[0]:r[2]]=forma(1,r[2]-r[0],col)#lado inferior
    img[r[1]:r[3],r[0]]=forma(1,r[3]-r[1],col)  #lado izquierdo
    img[r[1]:r[3],r[2]-1]=forma(1,r[3]-r[1],col)#lado derecho
    imshow(img)
    return show()

Sin-titulo
2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder