Answer the question
In order to leave comments, you need to log in
Why does numpy take only a thin strip of an image?
import numpy as np
from PIL import Image
im = Image.open('IMG_7760.JPG')
a = np.asarray(im)
for bb in a:
np.random.random((1,1,1)) * a
im = Image.fromarray(bb)
im.save('2222.JPG')
print(bb)
Traceback (most recent call last):
File "C:\Users\AlexK\PycharmProjects\just_codding_for_self\main.py", line 10, in
np.random.random((3,3,3)) * a
ValueError: operands could not be broadcast together with shapes (3,3,3) (824,824,3)
Answer the question
In order to leave comments, you need to log in
Wait, what kind of heresy are you even doing?
im = Image.open('IMG_7760.JPG')
a = np.asarray(im) # a - трёхмерный массив numpy (высота; ширина; каналы)
for bb in a: # перебираешь элементы по первому индексу (высоте), т.е. строки изображения
np.random.random((1,1,1)) * a #умножаешь каждый элемент (кортеж RGB) строки на одно и то же случайное число
#и всё. Полученное произведение выбрасывается за ненадобностью. Оригинальное значение ты не заменяешь ведь.
im = Image.fromarray(bb) #*строку* превращаешь в объект PIL.Image
im.save('2222.JPG') #и сохраняешь этот объект в файл
print(bb) #и выводишь на экран
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question