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

新手上路,请多包涵

我有两张图片,我想将它们保存为一张图片中的子图。

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

 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()

OpenCV imwrite 无法以其简单形式工作,因为它需要一张图像作为输入。我想将这些子图保存在一张图像中以供以后进行视觉分析。我怎样才能做到这一点?

它可以并排或彼此重叠。只是一个例子:)

两个图像合二为一

该示例仅用于演示目的。我应该能够像创建子图(x,y)一样将多个图像保存到一个图像中。例如,

在此处输入图像描述

原文由 utengr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

仅供其他读者参考:可以简单地使用 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

原文由 utengr 发布,翻译遵循 CC BY-SA 4.0 许可协议

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)

原文由 RMS 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题