Задать вопрос

Автоматический кроп лишнего фона на фото?

Здравствуйте!

Подскажите пожалуйста, есть около 2000 подобных фото мебели:
6f864e562721cafe56887fe743ea8fb2.png

Проблема в том, что все объекты разного размера, а нужно привести их к общему виду.

Все фото на белом фоне. Серая рамка — это размер фото, красная — то, как нужно кропнуть. Т.е. объект нужно вписать в прямоугольник и кропнуть лишнее.

Можно ли сделать это автоматически? Еще желательно добавить по 100px белого фона после кропа.

Спасибо!
  • Вопрос задан
  • 13734 просмотра
Подписаться 9 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
Paul_Smith
@Paul_Smith
Вот вам скрипт на питоне (2.7, PIL):
from PIL import Image
import math
import sys

way = '1.png'
print sys.argv[1]
way = sys.argv[1]
image = Image.open(way)
width = image.size[0]
height = image.size[1]

alpha = image.getpixel((2,2))



left = width
right = 0
top = height
bottom = 0
print str(alpha)
for x in range(width):
    for y in range(height):
        rng = math.sqrt(math.pow(image.getpixel((x,y))[0]-alpha[0],2)+math.pow(image.getpixel((x,y))[1]-alpha[1],2)+math.pow(image.getpixel((x,y))[2]-alpha[2],2))
        #print str(rng)
        if rng > 89:
            
            
            if x<left:
                left = x
            if x>right:
                right = x
            if y<top:
                top = y
            if y>bottom:
                bottom = y
print str(left)+ ','+str(top)+'   '+str(right)+','+str(bottom)                

width = right-left
height = bottom-top
img = Image.new("RGBA", (width,height), (0,0,0,0))
for x in range(width):
    for y in range(height):
        img.putpixel((x,y),image.getpixel((x+left,y+top)))


img.save("test1.png", "PNG")

print "Done!"



В качестве параметра получает название файла, кропает, создает файл crop_имя.расширение.
Результат работы:
Это:

Превращает в это:


Скормите этот скрипт bat файлу, который для всех файлов в папке его применит и будет вам счастье.
Ответ написан
Palehin
@Palehin
Frontend
В фотошопе:
Открываете одну картинку, которую надо обрезать, идете в меню Window -> Actions, Создаете новый Action (Create New Action), автоматически начнется запись действий. Идете в Image -> Trim, ставите галочку Top Left Pixel Color, жмете ок. Останавливаете запись Action (кнопочка стоп). Должно получиться примерно как на картинке:



Далее идете в File -> Automate -> Batch,
В поле Action — указываете только-что созданный вами Action
В поле Source — указываете Folder, жмете кнопку Choose, выбираете вашу папку с картинкам.
В поле Destination — указываете Save and Close
и нажимаете ОК.
Ответ написан
Комментировать
timokhin
@timokhin
iOS developer
Можно записать экшн в фотошопе, что-то типа: Magic Wand (в углу) -> Вырезать -> Выбрать все -> Скопировать -> Новый файл -> Вставить -> Сохранить. И запустить через Image Processor.
Ответ написан
Gimp + Bimp. Использовать процедуру автокадрирования.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы