2011-10-19 37 views

Trả lời

35

Đây là mẹo hữu ích cho các bài kiểm tra đơn vị và tương tự, khi bạn cần thực hiện so sánh pixel-điểm ảnh với một ô đã lưu.

Một cách là sử dụng fig.canvas.tostring_rgb và sau đó là numpy.fromstring với kiểu chữ approriate. Có nhiều cách khác nữa, nhưng đây là cách tôi có xu hướng sử dụng.

Ví dụ:

import matplotlib.pyplot as plt 
import numpy as np 

# Make a random plot... 
fig = plt.figure() 
fig.add_subplot(111) 

# If we haven't already shown or saved the plot, then we need to 
# draw the figure first... 
fig.canvas.draw() 

# Now we can save it to a numpy array. 
data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='') 
data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,)) 
+0

Tuyệt vời! 12345 – Petter

+0

Điều này chỉ được hỗ trợ trên một số chương trình phụ trợ nhất định? Dường như không hoạt động với chương trình phụ trợ 'macosx' (' tostring_rgb') không tìm thấy. – mirosval

+1

Hoạt động trên Agg, thêm 'matplotlib.use ('agg')' trước khi nhập khẩu matplotlib.pyplot là plt' để sử dụng nó. – mirosval

Các vấn đề liên quan