How To Convert Array To Image Colour Channel In Python?
Solution 1:
Before calling Image.fromarray()
on acb2
, make sure to change the dtype to int as it was in the beginning. The image.reconstruct_from_patches_2d
changes your picture values to float64, whereas the original values in cb
are uint8
. This is the only source of error I am getting. Other than that your code is working as expected.
Change your code from:
acb2 = image.reconstruct_from_patches_2d(patches, (500,500))
cb_n = Image.fromarray(acb2, 'L')
to:
acb2 = image.reconstruct_from_patches_2d(patches, (500,500))
#ADD THIS LINEacb2 = acb2.astype(np.uint8)
cb_n = Image.fromarray(acb2, 'L')
NOTE: (Unrelated to above)
Also make sure you are using correct dimensions in reconstruct_from_patches_2d
for the image size. As you have specified (500,500)
, I am assuming that the width is same as height (500). But in images where height and width are different, Image module
will be column-major whereas numpy (and python arrays by default) are row-major.
So,
pic_size = pic.size
will report output (Width, Height)
, But when using in reconstruct_from_patches_2d
, use (Height, Width)
.
Post a Comment for "How To Convert Array To Image Colour Channel In Python?"