本文只是在大佬的基礎上進行了一些額外的工作。大佬的**寫的很清楚。主要三個部分**鏈結如下
keras進行人民幣面額識別(一):
keras進行人民幣面額識別(二):
keras進行人民幣面額識別(三):
以上的**都是可以執行的。
# -*- coding: utf-8 -*-
import os
#對檔案重新命名便於生成csv檔案
#設定檔案路徑
path='c:/users/pc/desktop/a/public_test_data/test/test'
i=1#對目錄下的檔案進行遍歷
for file in os.listdir(path):
#判斷是否是檔案
if os.path.isfile(os.path.join(path,file))==true:
#設定新檔名
#重新命名
os.rename(os.path.join(path,file),os.path.join(path,new_name))
i+=1
#結束print ("end")
更改完成後效果圖如下:
#呼叫模型識別驗證集以及測試集
#testgen_dir = 'c:/users/pc/desktop/a/public_test_data/test'
testgen_dir = 'c:/users/pc/desktop/a/val_label'
#測試集目錄
fin_list = [0.1,0.2,0.5,1,2,5,10,50,100]
#相應標籤對應的人民幣面
dictionary =
#採用合理的名字給檔案進行命名
def get_result(directory):
file = open('val_data.csv','w')
file.write('name,label\n')
end = false # 相當於乙個開關,當ture的時候程式結束
i = 0 #記錄測試的數目
#建立生成器
test_datagen = imagedatagenerator(
rescale=1. / 255 #歸一化
)test_generator = test_datagen.flow_from_directory(
directory=directory, #位址
target_size=(150, 150),#縮放大小
shuffle=false,#是否打亂順序
batch_size=1,#一批次的數量
class_mode=none
)print(test_generator.filenames) # 按順序輸出檔案的名字
sample = (len(test_generator.classes)) #檔案總數目
print(sample)
model = load_model('face_value.h5')#載入訓練好的模型
#for img_np_list,label_list in test_generator:
for img_np_list in test_generator:
#得到特徵和標籤,這裡的標籤其實是資料夾名稱,在這裡沒有意義
file_list = test_generator.filenames
#按照順序獲得所有的名字(按資料夾順序)
pre_result_list = model.predict(img_np_list)
#輸入特徵,得出結果
if end == true:
break
for pre_result in pre_result_list:
result_list = pre_result.tolist() #將得到的結果轉換為列表形式
label = fin_list[result_list.index(max(result_list))]
#獲得對應的面值
try:
##file.writelines('{},{}\n'.format(file_list[i][-12:],label))
file.writelines('{},{}\n'.format(file_list[i][+5:], label))
#將得到的結果寫入csv檔案
i += 1
process = (i/sample) * 100
process = '進度:'.format(process)
print('的識別結果為:%'.format(file_list[i][+5:],label,process))
#列印資訊
# if (i > sample):
# end = true
# break
except indexerror:
end = true
break
print('程式結束,共識別%d個。' %sample)
get_result(testgen_dir)
識別完成後我們需要將這兩個csv檔案進行匹配,然後計算模型識別的準確率,**如下:
#對測試集手動打標籤時在新的csv檔案裡生成檔名
import csv
import os
# 1. 建立檔案物件
f = open('c:/users/pc/desktop/a/train_label.csv','w',encoding='utf-8')
# 2. 基於檔案物件構建 csv寫入物件
csv_writer = csv.writer(f)
# 3. 構建列表頭
csv_writer.writerow(["name"])
data=
path="c:/users/pc/desktop/a/public_test_data/test/test" #待讀取的資料夾
path_list=os.listdir(path)
path_list.sort()
path_list.sort(key=lambda x:int(x[:-4]))
number=len(path_list)
for i in range(number):
imgname=path_list[i]
#先給data賦值
with open('c:/users/pc/desktop/a/label.csv','r') as csvfile: #此處的csv是源表,即想要寫入的表
rows = csv.reader(csvfile)
with open('c:/users/pc/desktop/a/train_label.csv','w',newline='') as f: #這裡的csv則是最後輸出得到的新錶
writer = csv.writer(f)
i = 0
for row in rows:
print(i)
i = i + 1
writer.writerow(row)
# 5. 關閉檔案
f.close()
人民幣支付
描述 輸入一指定金額 以元為單位 然後輸出支付該金額的各種面額的人民幣數量,顯示100 元,50 元,20 元,10元,5 元,1元各多少張,盡量使用大面額。輸入 輸入乙個小於 1000 的正整數。輸出 分行輸出,每行顯示乙個整數,從上到下分別表示 100元,50元,20元,10元,5元,1元人民幣...
人民幣問題
時間限制 1 sec 記憶體限制 128 mb 提交 180 解決 129 統計給出任意的人民幣 100 100 元 求兌換成5元 2元和1元幣值 要求三種幣值均有 的方法有多少種。輸入任意的人民幣 100 100 元 的整幣。計算出兌換成5元 2元和1元幣值 要求三種幣值均有 的方法有多少種。10...
人民幣轉換
考試題目和要點 1 中文大寫金額數字前應標明 人民幣 字樣。中文大寫金額數字應用壹 貳 叄 肆 伍 陸 柒 捌 玖 拾 佰 仟 萬 億 元 角 分 零 整等字樣填寫。30分 2 中文大寫金額數字到 元 為止的,在 元 之後,應寫 整字,如 532.00應寫成 人民幣伍佰叄拾貳元整 在 角 和 分 後...