Tôi có một số (27) hình ảnh được trình bày trong mảng 2D mà tôi đang xem với imshow(). Tôi cần phải phóng to trên cùng một vị trí chính xác trong mọi hình ảnh. Tôi biết tôi có thể tự zoom, nhưng điều này là tẻ nhạt và không đủ chính xác. Có cách nào để lập trình chỉ định một phần cụ thể của hình ảnh để hiển thị thay vì toàn bộ nội dung không?Chức năng zoom Matplotlib imshow?
14
A
Trả lời
11
Bạn có thể sử dụng plt.xlim
và plt.ylim
để thiết lập khu vực này có thể vẽ:
import matplotlib.pyplot as plt
import numpy as np
data=np.arange(9).reshape((3,3))
plt.imshow(data)
plt.xlim(0.5, 1.5)
plt.ylim(0.5,1.5)
plt.show()
3
Nếu bạn không cần phần còn lại của hình ảnh của bạn, bạn có thể xác định một chức năng mà cắt hình ảnh tại tọa độ bạn muốn và sau đó hiển thị hình ảnh đã cắt.
Lưu ý: ở đây 'x' và 'y' là hình ảnh x và y (trục ngang và trục dọc trên hình ảnh tương ứng), có nghĩa là nó được đảo ngược so với x thực (hàng) và y (cột)) của mảng NumPy.
import scipy as sp
import numpy as np
import matplotlib.pyplot as plt
def crop(image, x1, x2, y1, y2):
"""
Return the cropped image at the x1, x2, y1, y2 coordinates
"""
if x2 == -1:
x2=image.shape[1]-1
if y2 == -1:
y2=image.shape[0]-1
mask = np.zeros(image.shape)
mask[y1:y2+1, x1:x2+1]=1
m = mask>0
return image[m].reshape((y2+1-y1, x2+1-x1))
image = sp.lena()
image_cropped = crop(image, 240, 290, 255, 272)
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
ax1.imshow(image)
ax2.imshow(image_cropped)
plt.show()
Các vấn đề liên quan
- 1. Overlay imshow lô trong matplotlib
- 2. imshow cho 3D? (Python/Matplotlib)
- 3. matplotlib imshow(): làm thế nào để animate?
- 4. Matplotlib: imshow trong âm mưu 3d
- 5. python matplotlib imshow() dấu kiểm tùy chỉnh
- 6. Matplotlib `imshow (nội suy = 'gần nhất')` làm gì?
- 7. Chức năng thực hiện sau khi zoom highcharts
- 8. Đến/zoom với chức năng hiện tại vị trí (MapKit)
- 9. Linestyle trong chức năng bước matplotlib
- 10. Ngăn chặn chống răng cưa cho imshow trong matplotlib
- 11. Matplotlib imshow có bù đắp cho khớp với trục không?
- 12. Đảo ngược hình ảnh được hiển thị bởi imshow trong matplotlib
- 13. Vẽ hai chức năng cùng một lúc với matplotlib
- 14. Làm thế nào để cập nhật cửa sổ imshow() của matplotlib tương tác?
- 15. pyplot zoom in
- 16. Xác định một bản đồ rời rạc cho imshow trong matplotlib
- 17. matplotlib imshow() với các điểm dữ liệu không đều cách đều nhau
- 18. Matplotlib: không có hiệu lực của set_data trong imshow cho âm mưu
- 19. matplotlib: giới hạn khi sử dụng âm mưu và imshow trong cùng một trục
- 20. AVCaptureDevice Camera Zoom
- 21. imshow() không hoạt động
- 22. Máy ảnh AVFoundation zoom
- 23. Raphael hoạt hình giấy zoom
- 24. Có chức năng tạo ma trận phân tán trong matplotlib không?
- 25. LRI: Chức năng ma thuật đường `% matplotlib` không được tìm thấy
- 26. Chức năng trong một TSQL Chức năng
- 27. UIImageView và UIScrollView zoom
- 28. Cách buộc ánh xạ màu tới phạm vi động lớn hơn đầu vào cụ thể để imshow trong matplotlib
- 29. Matplotlib: rung động và imshow chồng lên nhau, làm thế nào tôi có thể đặt hai thanh màu?
- 30. Làm cách nào để thay đổi tỷ lệ imshow trong matplotlib mà không kéo giãn hình ảnh?
Cảm ơn! Tôi nhận ra tôi cũng có thể cắt các mảng trước khi hiển thị, nhưng phương pháp của bạn bảo tồn phần còn lại của mảng. – Andruf
Trong phần giới thiệu tuyệt vời * [Bắt đầu với Python cho khoa học] (http://scipy-lectures.github.io/) *, đây là phần matplotlib, * [1.4. Matplotlib: vẽ đồ thị, 1.4.2.4. Đặt giới hạn] (http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html#setting-limits) *. –