我有代碼:
def get_image_array(data):
fig = plt.figure(figsize=(1.5, 1.5), dpi=100)
plt.plot(data, '-o', c='r')
plt.axis('off')
fig.canvas.draw()
img_arr = np.frombuffer(fig.canvas.tostring_rgb(), dtype=np.uint8)
img_arr = img_arr.reshape(fig.canvas.get_width_height()[::-1] (3,)).astype(np.float32)
img_arr = img_arr[None, :]
plt.close()
return img_arr
我創建圖形大小為 150x150 (RGB) 的圖形,將其轉換為 numpy 陣列以在 CNN 模型中使用。我在全高清顯示幕上啟動它,它可以作業,但它不適用于 2k、4k 顯示幕。錯誤是:
ValueError: cannot reshape array of size 270000 into shape (150,150,3)
如何為不同型別的解析度創建圖形大小為 150x150 的圖形?
uj5u.com熱心網友回復:
重塑只是重新配置現有資訊,因此如果您有 67500 個資料點(150*150*3),您可以將其作為一個長陣列,或者您可以將其嵌套為(150,150,3)or(22500,3)等??等。但是,如果您想獲得更大的解析度,您需要的資訊比可用的資訊多,因此您需要彌補一些資訊。
就像您可以將像素的大小加倍以覆寫 4 個像素而不是 1 個像素,或者您可以多次復制陣列,或者您可以用 0 或其他值填充它。有像numpy.resize這樣的函式,但你應該事先檢查你真正想要的樣子。
通常,相反的方法更容易,即您從高清影像開始,然后將其調整為更小。在這種情況下,您會在重新縮放時丟失資訊,因此您不必彌補。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/449436.html
標籤:Python 麻木的 matplotlib 图像处理
上一篇:如何將這個串列垂直重塑為水平
下一篇:如何過濾這個資料框?
