Присоединение отредактированных изображений в Python с помощью срезанного изображения - PullRequest
0 голосов
/ 14 мая 2018

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

Это моя первая публикация в stackoverflow (и я супер, супер новичок в python), поэтому извиняюсь, если я не ясен или если форматирование неверное.

# Import packages 
import numpy as np
from numpy import matlib
import PIL
import image_slicer
import math
import glob
from image_slicer import join
from PIL import Image

### Use PIL to import image
##img = Image.open("einstein.jpg")

# Display original image
# img.show()


##new_img = img.resize((256,256))
##new_img.save('einstein-256x256','png')
### new_img.show()

#Slice image into four pieces
tiles = image_slicer.slice("einstein.jpg", 16)

# Use glob to open every .png file with for loop
for filename in glob.glob("*.png"):
    img=Image.open(filename)

    pixels = img.load() # create the pixel map
    pixelMap = img.load() #create the pixel map

    #convert to array
    arr = np.asarray(img)

    #find mean 
    pixelMean = arr.mean(0).mean(0)[0]

    # Convert mean to integer 
    IntMean = math.floor(pixelMean)
    print(IntMean)


    ##pixel = pixelMap[0,0] #get the first pixel's value
    ##print(pixel)

    # Loop for going through every pixel in image and converting it
    for i in range(img.size[0]):    # for every col:
        for j in range(img.size[1]):    # For every row

            pixels[i,j] = (IntMean,IntMean,IntMean) # set the colour             accordingly

    # Save new monotone images
    img.save(filename)

# Join new images into one 
image = join(tiles)
# Save new image
image.save("einsteinJoined.jpg")

image.show()

1 Ответ

0 голосов
/ 23 октября 2018

В вашем вопросе, похоже, отсутствует ошибка, которую вы получаете с вашим текущим кодом.

Однако, если я правильно прочитал, вы вернете исходное изображение, как это было в Разделение и объединение изображений в Python . Как и в случае с ответом, принятым там, решение состоит в том, чтобы изменить изображение в каждой плитке, завершив цикл:

tile.image = Image.open (имя файла)

где плитка - это плитка, соответствующая файлу. Для этого вы должны перебрать плитки, полученные из функции image_slicer.slice. Это также дано в ответе на вопрос, связанный с.

...