Hướng dẫn merge two images python opencv - hợp nhất hai hình ảnh python opencv

86

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng sử dụng OpenCV 2.1 để kết hợp hai hình ảnh thành một, với hai hình ảnh được đặt liền kề với nhau. Trong Python, tôi đang làm:

import numpy as np, cv

img1 = cv.LoadImage(fn1, 0)
img2 = cv.LoadImage(fn2, 0)

h2, 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(h2, 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[:h2, :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()

Hai hình ảnh đầu vào là:

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

Hình ảnh kết quả là:

Hướng dẫn merge two images python opencv - hợp nhất hai hình ảnh python opencv

Có thể khó phân biệt với phần còn lại của trang web, nhưng hầu hết hình ảnh đều có màu trắng, tương ứng với nơi các hình ảnh riêng lẻ nên ở. Khu vực màu đen là nơi không có dữ liệu hình ảnh được viết.

Tại sao tất cả dữ liệu hình ảnh của tôi được chuyển đổi thành màu trắng?

Hỏi ngày 28 tháng 9 năm 2011 lúc 20:11Sep 28, 2011 at 20:11

4

Đối với các trường hợp hình ảnh của bạn có cùng kích thước (là trường hợp phổ biến để hiển thị kết quả xử lý hình ảnh), bạn có thể sử dụng numpy's Concatenate để đơn giản hóa mã của mình.

Để xếp chồng theo chiều dọc (IMG1 qua IMG2):

vis = np.concatenate((img1, img2), axis=0)

Để xếp chồng ngang (IMG1 ở bên trái của IMG2):

vis = np.concatenate((img1, img2), axis=1)

Để xác minh:

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)

Hình ảnh out.png sẽ chứa img1 ở bên trái và img2 ở bên phải.

Đã trả lời ngày 16 tháng 1 năm 2014 lúc 18:47Jan 16, 2014 at 18:47

Matt Libertymatt LibertyMatt Liberty

2.3361 Huy hiệu vàng17 Huy hiệu bạc17 Huy hiệu đồng1 gold badge17 silver badges17 bronze badges

2

Đối với những người đang tìm cách kết hợp 2 hình ảnh màu thành một, đây là một bản mod nhỏ về câu trả lời của Andrey đã làm việc cho tôi:color images into one, this is a slight mod on Andrey's answer which worked for me :

img1 = cv2.imread(imageFile1)
img2 = cv2.imread(imageFile2)

h2, w1 = img1.shape[:2]
h2, w2 = img2.shape[:2]

#create empty matrix
vis = np.zeros((max(h2, h2), w1+w2,3), np.uint8)

#combine 2 images
vis[:h2, :w1,:3] = img1
vis[:h2, w1:w1+w2,:3] = img2

Đã trả lời ngày 2 tháng 7 năm 2014 lúc 2:55Jul 2, 2014 at 2:55

Hướng dẫn merge two images python opencv - hợp nhất hai hình ảnh python opencv

FacepalmfacepalmFacePalm

9.8865 huy hiệu vàng45 Huy hiệu bạc48 Huy hiệu đồng5 gold badges45 silver badges48 bronze badges

1

import numpy as np, cv2

img1 = cv2.imread(fn1, 0)
img2 = cv2.imread(fn2, 0)
h2, w1 = img1.shape[:2]
h2, w2 = img2.shape[:2]
vis = np.zeros((max(h2, h2), w1+w2), np.uint8)
vis[:h2, :w1] = img1
vis[:h2, w1:w1+w2] = img2
vis = cv2.cvtColor(vis, cv2.COLOR_GRAY2BGR)

cv2.imshow("test", vis)
cv2.waitKey()

Hoặc nếu bạn thích cách di sản:

import numpy as np, cv

img1 = cv.LoadImage(fn1, 0)
img2 = cv.LoadImage(fn2, 0)

h2, w1 = img1.height,img1.width
h2, w2 = img2.height,img2.width
vis = np.zeros((max(h2, h2), w1+w2), np.uint8)
vis[:h2, :w1] = cv.GetMat(img1)
vis[:h2, w1:w1+w2] = cv.GetMat(img2)
vis2 = cv.CreateMat(vis.shape[0], vis.shape[1], cv.CV_8UC3)
cv.CvtColor(cv.fromarray(vis), vis2, cv.CV_GRAY2BGR)

cv.ShowImage("test", vis2)
cv.WaitKey()

Đã trả lời ngày 28 tháng 9 năm 2011 lúc 20:44Sep 28, 2011 at 20:44

Andrey Kamaevandrey KamaevAndrey Kamaev

29.1k6 Huy hiệu vàng89 Huy hiệu bạc86 Huy hiệu đồng6 gold badges89 silver badges86 bronze badges

2

Bạn cũng có thể sử dụng các hàm sẵn của OpenCV

vis = np.concatenate((img1, img2), axis=0)
3 và
vis = np.concatenate((img1, img2), axis=0)
4 giống như tên của chúng được sử dụng để tham gia hình ảnh theo chiều ngang và chiều dọc tương ứng.

import cv2

img1 = cv2.imread('opencv/lena.jpg')
img2 = cv2.imread('opencv/baboon.jpg')

v_img = cv2.vconcat([img1, img2])
h_img = cv2.hconcat([img1, img2])

cv2.imshow('Horizontal', h_img)
cv2.imshow('Vertical', v_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Sự kết hợp ngang

Hướng dẫn merge two images python opencv - hợp nhất hai hình ảnh python opencv

Sự kết hợp dọc

Hướng dẫn merge two images python opencv - hợp nhất hai hình ảnh python opencv

Đã trả lời ngày 12 tháng 5 năm 2020 lúc 21:09May 12, 2020 at 21:09

Hướng dẫn merge two images python opencv - hợp nhất hai hình ảnh python opencv

Vardan Agarwalvardan AgarwalVardan Agarwal

1.8432 huy hiệu vàng14 Huy hiệu bạc27 Huy hiệu đồng2 gold badges14 silver badges27 bronze badges

1

Để xếp chồng theo chiều ngang:

imgHor = np.hstack((img, img))

Để xếp chồng theo chiều dọc:

imgVer = np.vstack((img, img))

Để hiển thị:

vis = np.concatenate((img1, img2), axis=0)
0

Tomerikoo

16.7K15 Huy hiệu vàng38 Huy hiệu bạc54 Huy hiệu đồng15 gold badges38 silver badges54 bronze badges

Đã trả lời ngày 5 tháng 5 năm 2021 lúc 19:07May 5, 2021 at 19:07

Ba cách tốt nhất để thực hiện nó bằng cách sử dụng một dòng mã

vis = np.concatenate((img1, img2), axis=0)
1

Đã trả lời ngày 11 tháng 11 năm 2020 lúc 11:32Nov 11, 2020 at 11:32

Hướng dẫn merge two images python opencv - hợp nhất hai hình ảnh python opencv

Trong OpenCV 3.0, bạn có thể sử dụng nó dễ dàng như sau:

vis = np.concatenate((img1, img2), axis=0)
2

Đã trả lời ngày 21 tháng 1 năm 2020 lúc 13:57Jan 21, 2020 at 13:57

Hướng dẫn merge two images python opencv - hợp nhất hai hình ảnh python opencv

1

Làm cách nào để kết hợp hai hình ảnh trong opencv?

Chúng ta có thể sử dụng hàm Concatenate () của Numpy để kết hợp các ma trận của hình ảnh dọc theo các trục khác nhau. Ví dụ: chúng ta hãy sử dụng hàm Zeros () của Numpy để tạo hai hình ảnh với các màu khác nhau và sau đó kết hợp chúng theo chiều ngang bằng cách sử dụng hàm Concatenate ().use the concatenate() function of NumPy to concatenate the matrices of the images along different axes. For example, let's use the zeros() function of NumPy to create two images with different colors and then combine them horizontally using the concatenate() function.

Làm cách nào để hợp nhất hai hình ảnh trong Python?

Hợp nhất hai hình ảnh..
Tạo đối tượng hình ảnh cho các hình ảnh cần thiết bằng hàm Open () ..
Trong khi hợp nhất hai hình ảnh, bạn cần đảm bảo rằng cả hai hình ảnh đều có cùng kích thước. ....
Tạo một hình ảnh trống bằng hình ảnh. ....
Dán hình ảnh bằng hàm dán () ..

Làm cách nào để hợp nhất hai bức ảnh với nhau?

Cách sử dụng trình tham gia ảnh ...
Khởi động Adobe Express.Mở ứng dụng trên web hoặc di động để hợp nhất hình ảnh một cách nhanh chóng, dễ dàng và miễn phí ..
Khám phá các mẫu xu hướng.Kickstart dự án của bạn với một mẫu tuyệt đẹp.....
Tải lên ảnh của bạn.....
Kết hợp hình ảnh của bạn.....
Chia sẻ thiết kế của bạn trong vài giây ..

Hợp nhất CV2 là gì?

CV2.Hợp nhất () được sử dụng để hợp nhất một số hình ảnh một kênh thành hình ảnh màu/đa kênh.used to merge several single-channel images into a colored/multi-channel image.