Оптимизация: как улучшить заявление? - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть несколько изображений с формой в нем. И я хотел бы пометить эту форму для последующего кадрирования этих изображений. Я хочу, чтобы у каждого изображения была одна и та же рамка обрезки (разница в координатах между фигурами невелика).

У меня работает этот код:

from PIL import Image
import glob
import numpy as np

def Region():

    path = glob.glob('label/*.tif')
    L = [640,640,0,0]
    for img_name in path:
        x = []
        y = []
        img = Image.open(img_name)
        pic = np.array(img)

        for index, lit in enumerate(pic):
            for indox, value in enumerate(lit):
                if value == 0:
                    y.append(index)
                    x.append(indox)

        if min(y) < L[0]:
            L[0]=min(y)
        if min(x) < L[1]:
            L[1]=min(x)
        if max(y) > L[2]:
            L[2]=max(y)
        if max(x) > L[3]:
            L[3]=max(x)

   print L

И это дает мне этот вывод [298, 258, 424, 386], который хорошо соответствует тому, что я хочу. Но в порядке Мне нужно обработать много данных, и я уверен, что может быть лучший способ сделать это.

Поскольку я довольно новичок в программировании, я хотел бы знать, есть ли лучший способ выполнить эту задачу.

Любые советы?

Большое спасибо,

Привет

РЕДАКТИРОВАТЬ: если оператор L [3] ':'

1 Ответ

0 голосов
/ 27 апреля 2018

Вы можете определить минимальное и максимальное значения во время цикла, а не после цикла.

    for index, lit in enumerate(pic):
        for indox, value in enumerate(lit):
            if value == 0:
                if index < L[0]:
                    L[0] = index
                if indox < L[1]:
                    L[1] = indox
                if index > L[2]:
                    L[2] = index
                if indox > L[3]:
                    L[3] = indox
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...