np.hstack 和 np.vstack 不是 运行
np.hstack and np.vstack not run
我想合并三张图片。
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°图像是我的输出;
- 2°图像是
img
- 3°图像是
Y
- 4°图像是
X
感谢所有帮助过我的人
对于不同尺寸的图片,您可以使用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)
使用一行代码完成此操作的三种最佳方法。 但是,要连接的图像必须具有相同的尺寸,尤其是相同的通道数。
import cv2
import numpy as np
img = cv2.imread('image.jpg')
dim = (256, 256)
resizedLena = cv2.resize(img, dim, interpolation = cv2.INTER_LINEAR)
X, Y = resizedLena, resizedLena
# Method 1: Using Numpy (hstack, vstack)
Fusion_Horizontal = np.hstack((resizedLena, Y, X))
Fusion_Vertical = np.vstack((newIMG, X))
cv2.imshow('Fusion_Vertical using vstack', Fusion_Vertical)
cv2.waitKey(0)
# Method 2: Using Numpy (contanate)
Fusion_Vertical = np.concatenate((resizedLena, X, Y), axis=0)
Fusion_Horizontal = np.concatenate((resizedLena, X, Y), axis=1)
cv2.imshow("Fusion_Horizontal usung concatenate", Fusion_Horizontal)
cv2.waitKey(0)
# Method 3: Using OpenCV (vconcat, hconcat)
Fusion_Vertical = cv2.vconcat([resizedLena, X, Y])
Fusion_Horizontal = cv2.hconcat([resizedLena, X, Y])
cv2.imshow("Fusion_Horizontal Using hconcat", Fusion_Horizontal)
cv2.waitKey(0)
注:
如果图像的尺寸不同,您必须构建一个空矩阵并自行填充,就像之前的 post 一样。
对于您的情况,您可以将所有三个图像都放在参数中
newIMG = np.vstack((resizedLena, Y, X))
我想合并三张图片。
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°图像是我的输出;
- 2°图像是
img
- 3°图像是
Y
- 4°图像是
X
感谢所有帮助过我的人
对于不同尺寸的图片,您可以使用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)
使用一行代码完成此操作的三种最佳方法。 但是,要连接的图像必须具有相同的尺寸,尤其是相同的通道数。
import cv2
import numpy as np
img = cv2.imread('image.jpg')
dim = (256, 256)
resizedLena = cv2.resize(img, dim, interpolation = cv2.INTER_LINEAR)
X, Y = resizedLena, resizedLena
# Method 1: Using Numpy (hstack, vstack)
Fusion_Horizontal = np.hstack((resizedLena, Y, X))
Fusion_Vertical = np.vstack((newIMG, X))
cv2.imshow('Fusion_Vertical using vstack', Fusion_Vertical)
cv2.waitKey(0)
# Method 2: Using Numpy (contanate)
Fusion_Vertical = np.concatenate((resizedLena, X, Y), axis=0)
Fusion_Horizontal = np.concatenate((resizedLena, X, Y), axis=1)
cv2.imshow("Fusion_Horizontal usung concatenate", Fusion_Horizontal)
cv2.waitKey(0)
# Method 3: Using OpenCV (vconcat, hconcat)
Fusion_Vertical = cv2.vconcat([resizedLena, X, Y])
Fusion_Horizontal = cv2.hconcat([resizedLena, X, Y])
cv2.imshow("Fusion_Horizontal Using hconcat", Fusion_Horizontal)
cv2.waitKey(0)
注: 如果图像的尺寸不同,您必须构建一个空矩阵并自行填充,就像之前的 post 一样。
对于您的情况,您可以将所有三个图像都放在参数中
newIMG = np.vstack((resizedLena, Y, X))