代码之家  ›  专栏  ›  技术社区  ›  utengr

如何将多个图像(子块)写入一个图像

  •  1
  • utengr  · 技术社区  · 6 年前

    我当前的代码可以很好地将它们显示为子块。

    import cv2 as cv
    from matplotlib import pyplot as plt
    image1 = cv.imread('someimage')
    image2 = cv.imread('anotherimage')
    plt.subplot(1, 2, 1), plt.imshow(image1, 'gray')
    plt.subplot(1, 2, 1), plt.imshow(image2, 'gray')
    plt.show()
    

    开放简历 imwrite

    它可以是并排的,也可以是相互重叠的。举个例子:)

    Two images in one

    这个例子只是为了演示。我应该可以像创建子块(x,y)一样将多个图像保存到一个中。例如,

    enter image description here

    3 回复  |  直到 4 年前
        1
  •  3
  •   utengr    6 年前

    仅对其他读者: 可以简单地使用matplotlib.pyplot.savefig。它以plt.show()显示子块的方式保存子块。

    https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.savefig

    结果代码应该如下所示:

    import cv2 as cv
    from matplotlib import pyplot as plt
    image1 = cv.imread('someimage')
    image2 = cv.imread('anotherimage')
    plt.subplot(1, 2, 1), plt.imshow(image1, 'gray')
    plt.subplot(1, 2, 2), plt.imshow(image2, 'gray')
    plt.savefig('final_image_name.extension') # To save figure
    plt.show() # To show figure
    
        2
  •  2
  •   RMS    6 年前
    import cv2 as cv
    from matplotlib import pyplot as plt
    image1 = cv.imread('someimage')
    image2 = cv.imread('anotherimage') 
    final_frame = cv.hconcat((image1, image2)) # or vconcat for vertical concatenation
    cv.imwrite("image.png", final_frame)
    
        3
  •  1
  •   Jeru Luke    6 年前

    你可以用 numpy.concatenate

    import numpy as np
    import cv2
    image1 = cv.imread('someimage')
    image2 = cv.imread('anotherimage')
    final = np.concatenate((image1, image2), axis = 0)
    cv2.imwrite('final.png', final)
    

    axis = 0 垂直连接图像

    axis = 1 水平连接图像