«изображения не совпадают с ошибкой» Использование подушки при попытке вставить - PullRequest
0 голосов
/ 03 марта 2019

Мой партнер и я начали работать над проектом создания программы манипуляции с использованием подушек.Наша текущая цель - приклеить маску логотипа яблока на другое изображение, чтобы изменить ее форму.

Подушка оказалась нелепо тяжелой для меня и для нее, и мы пришли к тому, что нам нужна помощь,

Вот текущий код, основанный на коде, который нам дал наш учитель.Каждый раз при запуске выдается ошибка ValueError: изображения не совпадают.Сообщение об ошибке также находится ниже.

from __future__ import print_function
import matplotlib 
matplotlib.use('Agg')
import matplotlib.pyplot as plt 
import os.path  
import PIL
import PIL.ImageDraw            

def apple_logo(original_image):

    width, height = original_image.size
    apple = PIL.Image.open('logo.jpg')
    apple.resize((width, height))
    apple.load()


    result = PIL.Image.new('RGBA', original_image.size, (0,0,0,0))
    result.paste(original_image, (0,0), mask=apple)
    return result

def get_images(directory=None):

    if directory == None:
        directory = os.getcwd() # Use working directory if unspecified

    image_list = [] # Initialize aggregaotrs
    file_list = []

    directory_list = os.listdir(directory) # Get list of files
    for entry in directory_list:
        absolute_filename = os.path.join(directory, entry)
        try:
            image = PIL.Image.open(absolute_filename)
            file_list += [entry]
            image_list += [image]
        except IOError:
            pass # do nothing with errors tying to open non-images
    return image_list, file_list

def apple_logo_all(directory=None):

    if directory == None:
        directory = os.getcwd() # Use working directory if unspecified

    # Create a new directory 'modified'
    new_directory = os.path.join(directory, 'modified')
    try:
        os.mkdir(new_directory)
    except OSError:
        pass # if the directory already exists, proceed  

    # Load all the images
    image_list, file_list = get_images(directory)  

    # Go through the images and save modified versions
    for n in range(len(image_list)):
        # Parse the filename
        print(n)
        filename, filetype = os.path.splitext(file_list[n])

        # Round the corners with default percent of radius
        curr_image = image_list[n]
        new_image = apple_logo(curr_image) 

        # Save the altered image, suing PNG to retain transparency
        new_image_filename = os.path.join(new_directory, filename + '.png')
        new_image.save(new_image_filename)    

apple_logo_all()

Сообщение об ошибке:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
/usr/lib/python2.7/dist-packages/IPython/utils/py3compat.pyc in        execfile(fname, *where)
    202             else:
    203                 filename = fname
--> 204             __builtin__.execfile(filename, *where)

/home/ubuntu/workspace/1.4.7/Boen_Phaneendra_1.4.8.py in <module>()
     67         new_image.save(new_image_filename)
     68 
---> 69 apple_logo_all()

/home/ubuntu/workspace/1.4.7/Boen_Phaneendra_1.4.8.py in         apple_logo_all(directory)
     61         # Round the corners with default percent of radius
     62         curr_image = image_list[n]
---> 63         new_image = apple_logo(curr_image)
     64 
     65         # Save the altered image, suing PNG to retain transparency

/home/ubuntu/workspace/1.4.7/Boen_Phaneendra_1.4.8.py in apple_logo(original_image)
     16 
     17     result = PIL.Image.new('RGBA', original_image.size, (0,0,0,0))
---> 18     result.paste(original_image, (0,0), mask=apple)
     19     return result
     20 

/usr/lib/python2.7/dist-packages/PIL/Image.pyc in paste(self, im, box, mask)
   1124         if mask:
   1125             mask.load()
-> 1126             self.im.paste(im, box, mask.im)
   1127         else:
   1128             self.im.paste(im, box)

ValueError: images do not match

Извините за беспокойство.Мы просто не можем понять это.

Спасибо:)

-J

...