我對在 Python 中處理影像非常陌生。我有一項任務要求我對影像進行一些預處理,這些影像是從 NPZ 檔案中提供給我的。然后,我將資料拆分為訓練、驗證和測驗,這就是它的外觀:
train_set = PathMNIST(mode="train") #89996
val_set = PathMNIST(mode="val") #10004
test_set = PathMNIST(mode="test") #7180
print(len(train_set))
print(len(val_set))
print(len(test_set))
集合中的每個專案如下所示:
(array([220, 208, 227, ..., 222, 209, 228], dtype=uint8), 0)
所以,據我了解,它是一個元組,其中第一個位置代表影像,第二個位置代表一個標簽。我要做的是將第一個位置的陣列作為影像讀取,這樣我就可以對其進行一些預處理。但是,當我嘗試繪制它時,Invalid shape出現錯誤:
plt.figure(figsize=(10, 10))
for i, (images, labels) in enumerate(train_set):
ax = plt.subplot(3, 3, i 1)
plt.imshow(images)
plt.title(np.argmax(labels[i]))
plt.axis("off")
#output: TypeError: Invalid shape (2352,) for image data
所以我想我的問題是:我如何將該陣列讀取為影像并將其視為影像?我查看了一些關于它的問題和主題,但我無法讓它適用于我的場景。
uj5u.com熱心網友回復:
您的陣列是大小為 2352 的一維陣列。
正如 Christoph 提到的,MNIST 資料集中的每個資料點都是大小為 (28 * 28 * 3) 的 RGB 影像。它們中的每一個都被展平為大小為 2352 的一維陣列。
我們可以使用以下方法重塑它numpy:
b = np.reshape(a, (28, 28,3))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/485701.html
標籤:Python 麻木的 matplotlib 图像处理
