欢迎光临
我们一直在努力

如何通过python numpy来合并多张图片

一直以来对Numpy的印象就是做矩阵运算的一个python模块,好似感觉就是在数学教学里面或者枯燥的科研里面用用,但是近来因为工作的原因解除到很多tensorflow的pipeline之后,发现numpy在深度学习里面几乎无处不在,尤其是在data的预处理上,还有一些模型的推断代码上更是如此。
鉴于此又恰好看到有些模型里面用到了numpy来合并几张图片的预处理方式。这里记一下 方便后面的学习。

图片说白了就是二维的像素矩阵,而像素就是rgb三维数组,所以思路就是这样,先用opencv读取每一张图片到一个numpy的array  array的shape就是图片 (w,h,3) 然后长度w取和 宽度h取最大(因为是垂直方向的拼接)再np.zeros(sum(w),max(h),3)   最后把三个矩阵在垂直方向上赋值给新的zeros矩阵

代码如下:

 

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import sys
import cv2
import glob
import numpy as np

reload(sys)
sys.setdefaultencoding('utf-8')

image_dir = '/Users/andy/Downloads/testnumpy/*.png'


def main():
    images = [cv2.imread(image_file) for image_file in glob.glob(image_dir)]
    height = sum([image.shape[0] for image in images])
    width = max([image.shape[1] for image in images])
    output = np.zeros((height, width, 3))
    y = 0
    for image in images:
        h, w, d = image.shape
        output[y:y + h, 0:w] = image
        y += h
    cv2.imwrite("test.jpg", output)


if __name__ == '__main__':
    main()
【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 如何通过python numpy来合并多张图片
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址