Draw vertical line centered on image [closed]

0

I'm working with Python image processing using the PIL and Matplotlib library and I'm not succeeding for the following purpose:

I have the image below.

Iwouldliketodrawaverticalandcentralizedline,asshownbelow:

I have tried several approaches using the PIL library, Matplotlib and many others that I found, but I was not successful.

Does anyone know how to do this?

    
asked by anonymous 14.07.2018 / 06:07

1 answer

1

Example using Pillow :

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Desenhar linha em uma imagem.

Utilizando o Pillow:

.. code-block:

    pip install pillow

Os valores que devem ser passados para ''Line()'':

- valor inicial de x.
- valor inicial de y.
- valor final de x.
- valor final de y.

''fill'' é responsável por determinar a cor da linha:

- fill=(R, G, B, Opacidade)

''width'' determina a espessura da linha que será desenhada.

Após abrir a imagem:

.. code-block::

    img = Image.open('NomeDaImagem.jpg')

A variável ''img'' passa a ter algumas informações da imagem que foi aberta.
"""

from PIL import Image, ImageDraw

# Abrindo a imagem.
img = Image.open('imagem.jpg')

# Colocando a imagem na área de 'desenho'
draw = ImageDraw.Draw(img)

# Desenhando a linha:
# Localizando o centro da imagem.
centro_x = img.size[0] / 2
centro_y = img.size[1] / 2

# Tamanho da imagem.
x = img.size[0]
y = img.size[1]

# Criando a linha.
draw.line((centro_x, 0, centro_x, y), fill=(255, 0, 0, 100), width=2)

# Descartando a área de desenho.
del draw

# Salvando a imagem com as modificações.
# img.save('imagem_com_linha.jpg', 'JPEG')
img.save('imagem_com_linha.png', 'PNG')

Result:

Note that the center of the line is based on the size of the image.

The line size is going from zero to the size of the image too, just adjust these values according to your needs.

    
14.07.2018 / 14:25