Cách lấy tất cả các pix theo các chỉ số nhất định từ một mảng hình ảnh
Hình dạng mảng hình ảnh là (540, 960, 3)
, và nó như thế này:
img_rgb = [[[ 95 71 71]
[ 95 71 71]
[ 95 71 71]
...
[182 171 181]
[182 171 181]
[182 171 181]]
[[ 95 71 70]
[ 95 71 70]
[ 95 71 71]
...
[183 172 182]
[183 172 182]
[183 172 182]]
[[ 95 72 70]
[ 95 71 70]
[ 95 71 71]
...
[183 172 182]
[183 172 182]
[183 172 182]]
...
[[ 36 35 45]
[ 36 35 45]
[ 36 35 45]
...
[ 49 45 50]
[ 49 45 50]
[ 49 45 50]]
[[ 36 35 45]
[ 36 35 45]
[ 36 35 45]
...
[ 49 45 50]
[ 49 45 50]
[ 49 45 50]]
[[ 36 35 45]
[ 36 35 45]
[ 36 35 45]
...
[ 49 45 50]
[ 49 45 50]
[ 49 45 50]]]
Và tôi muốn lấy các phần tử bằng cách indices
chỉ ra chỉ số từng phần tử, và những thứ indices
tương tự như thế này:
indices = [
[0, 0], [0, 1], [0, 2]
]
Sản lượng mong đợi
[
[ 95 71 71],
[ 95 71 71],
[ 95 71 71],
]
Có những câu hỏi tương tự trong liên kết đó, một là tổng mảng 2D phức tạp của Python trên các chỉ số nhất định và câu hỏi khác là Tìm chỉ số (x, y) của các giá trị màu (R, G, B) cụ thể từ các hình ảnh được lưu trữ trong NumPy ndarrays .
Nó nhận được IndexError: too many indices for array
câu hỏi Khi tôi thử từng câu một img_rgb[tuple(indices)]
.
Trả lời
fountainhead
Bạn chỉ cần chuyển vị indices
.
img_rgb[tuple(np.transpose(indices))]
np.tranpose()
sẽ hoạt động ngay cả khi indices
chỉ là một danh sách, vì nó mong đợi là đầu vào của bất kỳ cấu trúc "giống mảng" nào.