問題描述
我正在嘗試使用 OpenCV 2.1 將兩個圖像合二為一,兩個圖像彼此相鄰放置.在 Python 中,我正在做:
I'm trying to use OpenCV 2.1 to combine two images into one, with the two images placed adjacent to each other. In Python, I'm doing:
import numpy as np, cv
img1 = cv.LoadImage(fn1, 0)
img2 = cv.LoadImage(fn2, 0)
h1, w1 = img1.height,img1.width
h2, w2 = img2.height,img2.width
# Create an array big enough to hold both images next to each other.
vis = np.zeros((max(h1, h2), w1+w2), np.float32)
mat1 = cv.CreateMat(img1.height,img1.width, cv.CV_32FC1)
cv.Convert( img1, mat1 )
mat2 = cv.CreateMat(img2.height, img2.width, cv.CV_32FC1)
cv.Convert( img2, mat2 )
# Copy both images into the composite image.
vis[:h1, :w1] = mat1
vis[:h2, w1:w1+w2] = mat2
h,w = vis.shape
vis2 = cv.CreateMat(h, w, cv.CV_32FC3)
vis0 = cv.fromarray(vis)
cv.CvtColor(vis0, vis2, cv.CV_GRAY2BGR)
cv.ShowImage('test', vis2)
cv.WaitKey()
兩個輸入圖像是:
https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/box.png?rev=2270
https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/box_in_scene.png?rev=2270
生成的圖像是:
可能很難與網站的其他部分區分開來,但大部分圖像都是白色的,對應于單個圖像應該在的位置.黑色區域是沒有寫入圖像數據的地方.
It may be hard to distinguish from the rest of the site, but most of the image is white, corresponding to where the individual images should be. The black area is where no image data was written.
為什么我的所有圖像數據都被轉換為白色?
Why is all my image data being converted to white?
推薦答案
對于你的圖片恰好大小相同的情況(這是顯示圖片處理結果的常見情況),你可以使用 numpy 的 concatenate 來簡化你的代碼.
For cases where your images happen to be the same size (which is a common case for displaying image processing results), you can use numpy's concatenate to simplify your code.
垂直堆疊(img1 over img2):
To stack vertically (img1 over img2):
vis = np.concatenate((img1, img2), axis=0)
水平堆疊(img1在img2的左邊):
To stack horizontally (img1 to the left of img2):
vis = np.concatenate((img1, img2), axis=1)
驗證:
import cv2
import numpy as np
img1 = cv2.imread('img1.png')
img2 = cv2.imread('img2.png')
vis = np.concatenate((img1, img2), axis=1)
cv2.imwrite('out.png', vis)
out.png 圖像將在左側包含 img1,在右側包含 img2.
The out.png image will contain img1 on the left and img2 on the right.
這篇關于使用 OpenCV 組合兩個圖像的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!