在python中将两张照片粘在一起

时间:2016-05-07 18:26:37

标签: python image python-3.x

简短的问题,我有2张图片。一个是通过以下方式导入:
Image = mpimg.imread('image.jpg')
虽然另一个是上面导入的图像的处理图像,但是该图像首先从rgb转换为hls然后返回。此转换的结果给出了一个“列表”,它与导入图像的uint8不同。 当我试图将这些图像与功能结合在一起时:

new_img2[:height,width:width*2]=image2  

通过绘制图像时,我看不到合成图像中的第二张图像:

imgplot = plt.imshow(image2)
plt.show()   

工作正常。将orignal转换为“list”然后将它们或“list”组合到uint8的最佳方法是什么?

有关更多信息,结果必须是这样的: enter image description here

右边是黑色的,因为我尝试导入的图像有另一种类型的数组。左图是uint8而另一图是“列表”。第二个图像是这个,从python中保存: enter image description here

2 个答案:

答案 0 :(得分:0)

不确定如何以上面显示的方式进行操作,但我始终能够合并并保存图像,如下所示!

def mergeImages(image1, image2, dir):
'''
    Merge Image 1 and Image 2 side by side and delete the origional

    '''
    #adding a try/except would cut down on directory errors. not needed if you know you will always open correct images
    if image1 == None:
        image1.save(dir)
        os.remove(image2)
        return 

    im1 = Image.open(image1) #open image
    im1.thumbnail((640,640)) #scales the image to 640, 480. Can be changed to whatever you need
    im2 = Image.open(image2) #open Image
    im1.thumbnail((640,480)) #Again scale
    new_im = Image.new('RGB', (2000,720)) #Create a blank canvas image, size can be changed for your needs
    new_im.paste(im1, (0,0)) #pasting image one at pos (0,0), can be changed for you
    new_im.paste(im2, (640,0)) #again pasting
    new_im.save(dir) #save image in defined directory
    os.remove(image1) #Optionally deleting the origonal images, I do this to save on space
    os.remove(image2)

答案 1 :(得分:0)

经过一天的搜索后,我发现两个变量都可以更改为float64的类型。 “list”变量:

Image = np.asarray(Image)  

这将从List变量创建一个float 64。虽然uint8可以通过以下方式更改为float64:

Image2=np.asarray(Image2/255)

比2可以结合:

totalImgage = np.hstack((Image,Image2))

创建想要的图像。