由于某些原因
im_data = np.array(im.getdata()).reshape(im.size[0], im.size[1], 3)
p1 = im.getpixel((i, j))
p2 = im_data[i, j]
p1和p2的RGB值大部分时间是相同的,除非它们不同。有什么想法为什么会这样?
由于某些原因
im_data = np.array(im.getdata()).reshape(im.size[0], im.size[1], 3)
p1 = im.getpixel((i, j))
p2 = im_data[i, j]
p1和p2的RGB值大部分时间是相同的,除非它们不同。有什么想法为什么会这样?
import numpy as np
from PIL import Image
def reshape_img(img: Image):
img_data = np.array(img.getdata()).reshape(img.size[1], img.size[0], 3)
difference_found = False
for i in range(img.size[0]):
for j in range(img.size[1]):
get_pixel = img.getpixel((i, j))
data = img_data[j, i]
if any(get_pixel != data):
difference_found = True
msg = 'Difference in pixel {pixel}: img.getpixel={getpixel}, ' \
'img_data={data}'.format(pixel=(i, j), getpixel=get_pixel, data=data)
print(msg)
if not difference_found:
msg = 'The two images are identical'
print(msg)
if __name__ == '__main__':
ams = Image.open('amsterdam_small.jpg')
reshape_img(ams)
(x,y)
坐标,而另一个使用(row, col)
,这意味着(y,x)
。 - furasim.getdata()
的工作原理,那么它们应该完全相同,对于大多数值来说确实如此,但并非全部。 - adammengesgetpixel()
使用x,y
坐标,但是im_data[]
使用y,x
坐标——这样你就会比较不同的像素——将x,y
与y,x
进行比较(例如(0,100)
与(100,0)
)。 - furas