首页 > 解决方案 > np.hstack 和 np.vstack 未运行

问题描述

我想合并三个图像。

img = cv2.imread('Lenna_(test_image).png', 0)
dim = (256, 256)
resizedLena = cv2.resize(img, dim, interpolation = cv2.INTER_LINEAR)

Y是被修改的图像img并且X是被修改的另一个图像img但等于img

现在,我想结合img, Y, X这个命令

newIMG = np.vstack((resizedLena, Y))
outputIMG = np.vstack((newIMG, X))
cv2.imshow('return IMG', outputIMG)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:

  1. 1° 图像是我的输出;
  2. 2°图像是img
  3. 3°图像是Y
  4. 4°图像是X

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

感谢任何帮助我的人

标签: pythonopencvopencv-python

解决方案


对于不同尺寸的图像,您可以使用numpy. 然后您可以创建水平组合图像。

您需要确定索引。

例如:

  • 如果第一张图片从0:h1, 0:w1
  • 第二张图片从0:h1, w1:w1 + w2
  • 第三张图片从0:h1, w1 + w2:w1 + w2 + w3
  • 第四张图片从0:h1, w1 + w2 + w3:w1 + w2 + w3 + w4

结果将是:

在此处输入图像描述

代码:

from cv2 import imread, imshow, waitKey
from cv2 import IMREAD_GRAYSCALE, imwrite
from numpy import zeros

img1 = imread("1.png", IMREAD_GRAYSCALE)
img2 = imread("2.png", IMREAD_GRAYSCALE)
img3 = imread("3.png", IMREAD_GRAYSCALE)
img4 = imread("4.png", IMREAD_GRAYSCALE)

(h1, w1) = img1.shape[:2]
(h2, w2) = img2.shape[:2]
(h3, w3) = img3.shape[:2]
(h4, w4) = img4.shape[:2]

out = zeros((h1, w1 + w2 + w3 + w4), dtype="uint8")

out[0:h1, 0:w1] = img1
out[0:h1, w1:w1 + w2] = img2
out[0:h1, w1 + w2:w1 + w2 + w3] = img3
out[0:h1, w1 + w2 + w3:w1 + w2 + w3 + w4] = img4

imwrite("out.png", out)

imshow("out", out)
waitKey(0)

推荐阅读