1.圖像目錄為手動方式建立,請於圖像目錄內放置多個圖檔。
- def createFileList(myDir,format='.jpg'):
- fileList=[]
- print(myDir)
- for root,dir,files in os.walk(myDir,topdown=True):
- print('root:',root)
- print('dir:',dir)
- print('files:',files)
- for name in files:
- if name.endswith(format):
- fullName=os.path.join(root,name)
- fileList.append(fullName)
- return fileList
複製代碼os.walk
• 代表作業系統開始於這個資料夾進行檔案探索。
• 會有三個回傳值
• root 目前的目錄名稱
• dir 子資料夾名稱,若沒有子資料夾則空白
• files 檔案清單
• 兩個參數
• myDir 代表你要探索的目錄
• topdown
• =True 代表優先查看根目錄
• =False 代表修先查看子目錄
2.將圖像轉換為灰階後再轉Numpy資料後儲存。
- for file in myFileList:
- img_file=Image.open(file)
- width,height=img_file.size
- format=img_file.format
- mode=img_file.mode
- img_gray=img_file.convert('L')
- value1=np.array(img_gray.getdata(),dtype=np.int)
- value=np.array(img_gray.getdata(),dtype=np.int).reshape((img_gray.size[1],img_gray.size[0]))
- value=value.flatten()
- with open('img_pixels.csv','a',newline='') as f:
- writer=csv.writer(f)
- writer.writerow(value)
複製代碼- <font size="4">PIL的size將會輸出寬width與高height。
- • 可是影像的寬與高,相對於矩陣資料就是columns與rows。
- • PIL是寬X高,而Numpy的計算則是rows Xcolumns
- • img_gray.size[1] 代表圖像的高,也代表圖像轉矩陣後的rows
- • img_gray.size[0] 代表圖像的寬,也代表圖像轉矩陣後的columns</font>
複製代碼• PIL語法產生的影像物件不能直接用print讀取,不能直接以矩陣方式顯示。
• .convert('L') 轉換為灰階的色彩格式。
• np.array(img_gray.getdata(),dtype=np.int) 將會產生一維矩陣資料,這資料就可以儲存作為後續的辨識學習。
• 而reshape動作主要是重建圖檔。
• flatten( )代表將二維資料進行平坦化。 VGG16顯示特徵
• 因為VGG16預設圖像大小為224X224,所以圖像輸入後得做大小調整。
• model=VGG16()
• model=Model(inputs=model.inputs,outputs=model.layers[1].output)
• model.summary()
• 上述程式只是利用VGG16()這個keras應用程式application內的一個捲積層,之後查看特徵擷取的過程。
• 我們的模型並不完整
|