[英]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
修改的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()
結果:
img
Y
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)
注意:如果圖像沒有相同的尺寸,您必須構建一個空矩陣並自己填充它,就像之前的帖子一樣。
在您的情況下,您可以將所有三個圖像都放在參數中
newIMG = np.vstack((resizedLena, Y, X))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.