Có cách nào thành ngữ hơn để hiển thị lưới hình ảnh như trong ví dụ dưới đây không?Cách đơn giản hơn để hiển thị hình ảnh trong một ô lưới có hình khối
import numpy as np
def gallery(array, ncols=3):
nrows = np.math.ceil(len(array)/float(ncols))
cell_w = array.shape[2]
cell_h = array.shape[1]
channels = array.shape[3]
result = np.zeros((cell_h*nrows, cell_w*ncols, channels), dtype=array.dtype)
for i in range(0, nrows):
for j in range(0, ncols):
result[i*cell_h:(i+1)*cell_h, j*cell_w:(j+1)*cell_w, :] = array[i*ncols+j]
return result
Tôi đã thử sử dụng hstack
và reshape
v.v. nhưng không thể có được hành vi phù hợp.
Tôi quan tâm đến việc sử dụng gọn gàng để thực hiện việc này vì có giới hạn về số lượng hình ảnh bạn có thể vẽ với các cuộc gọi matplotlib tới subplot
và imshow
.
Nếu bạn cần dữ liệu mẫu để kiểm tra bạn có thể sử dụng webcam của bạn như vậy:
import cv2
import matplotlib.pyplot as plt
_, img = cv2.VideoCapture(0).read()
plt.imshow(gallery(np.array([img]*6)))
Hình dạng 'mảng' là gì? – Divakar
4 kích thước của nó (chỉ mục, hàng, cột, cường độ). Ở đâu cường độ = 3. –
Tôi không thể chạy nó. Bạn có thể gửi một mẫu/thử nghiệm nó ra ở cuối của bạn? – Divakar