[英]Append multiple training data npy files to one npy file
我在第一列圖像中包含許多.npy文件,在第二列中包含另一個列表(可以選擇[1,0,0]或[0,1,0]或[0,0,1]) 。 我已經將每50幀保存-並將其對應的選項保存到.npy文件中,現在當我訓練將它們全部附加到一個.npy文件並保存時,然后嘗試在新的.npy文件上運行for循環,以看到圖像(出於調試目的-查看其是否工作),它會引發錯誤:
File "<ipython-input-8-24f0dc711e53>", line 6, in <module>
cv2.imshow('test', img)
TypeError: mat data type = 17 is not supported
這是我的合並代碼:
starting_value = 1;
train_data = np.load('training_data-{}.npy'.format(starting_value))
train_data_arr = []
# Merge all our training data files into one file
def merge_training_data():
# load training data from pc
while True:
file_name = 'training_data-{}.npy'.format(starting_value)
if os.path.isfile(file_name):
train_data_arr.append(np.load(file_name))
starting_value += 1
else:
print('File does not exist, finished merging!',starting_value)
train_data_arr = np.array(train_data_arr)
np.save(file_name, train_data_arr)
break
和我的測試:
#testing
starting_value = 4;
train_data = np.load('training_data-{}.npy'.format(starting_value))
for data in train_data:
img = data[0]
choice = data[1]
cv2.imshow('test', img)
print(choice)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
錯誤是基於您使用的圖像格式。 這是一個相關的答案 。
您可以在此處找到OpenCV類型的列表。 type = 17表示您的圖像是CV_8SC3,又稱3通道char矩陣。 但是,閾值僅接受(單通道,8位或32位浮點)。 這意味着類型必須為CV_8UC1或CV_32FC1。 檢查img的形狀和dtype,並根據需要調整img。
我也看到過類似的錯誤,因為它期望使用mat
格式,但是您沒有先將其讀取為mat
,這可能導致它假定您的錯誤中的dtype
是17
,而實際上類型是正確的,您只需要在閱讀img之前顯示它。
嘗試這個:
#testing
starting_value = 4;
train_data = np.load('training_data-{}.npy'.format(starting_value))
for data in train_data:
img = cv2.imread(data[0])
choice = data[1]
cv2.imshow('test', img)
print(choice)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
可能是因為當您保存這些圖像時,它們的格式正確,但在重新加載后丟失了類,因此在使用它們之前,您需要告訴Python它們是什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.