2017-09-17 55 views
0

我在寫一個python程序來分類字母和數字。我已經寫了分類器,並且我有我的數據集的圖像。我真的沒有太多的Python或使用圖像的經驗。 我的問題是如何用我擁有的圖像創建我的數據集。如何創建一個像它們一樣的數組。我應該創建一個每個圖像的numpy數組嗎?或者使用顏色直方圖? 我可能會將所有圖像轉換爲灰度。從圖像中提取數字和字母特徵

我發現了分類貓和狗的鏈接。它使用兩種方法來提取圖像特徵,但我不知道這是否適用於我的情況。

k-nn-classifier-for-image-classification

任何人都可以指導我我可以提取我的圖片的功能載體,例如,所以我可以在我的「dataset.data」文件寫入這些數據?

我會用相似圖片波紋管的圖像:

Letter "e"

我甚至考慮調整圖像大小32×32,創造如0和1表示圖像的位圖。

任何人都可以指導我,例如,我可以將我的圖像的特徵提取到矢量中,以便我可以將這些數據寫入「dataset.data」文件中?

謝謝。

回答

1

你通常想要創建一個Numpy數組來保存所有的訓練數據。這是常見的在它下面的形狀安排:

X_train.shape = (N, img.shape[0], img.shape[1])

其中N是該組中的圖像的數量。

這樣,如果您使用單通道(灰度),X_train[i,:,:]將保存第i個圖像像素的值。請注意,建議將這些值標準化,但這取決於您選擇訓練的模型。

下面是如何創建建立這樣一個數組一個簡單的例子:

import numpy as np 
import cv2 

X = np.zeros((N, IMG_SIZE[0], IMG_SIZE[1]), dtype=np.float32) 
y = np.zeros((N)) 
for idx, img_path in enumerate(images_path): 
    img = cv2.imread(img_path) 
    assert ((img.shape[0], img.shape[1]) == IMG_SIZE) 
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
    X[idx, :, :] = gray 
    y[idx] = # label of this image 

# if you wish to normalize: 
X = (X/255.0) - 0.5 

許多教程位數分類在那裏,通常使用MNIST數據集作爲一個例子。這裏有一個example,但你應該繼續,谷歌。

如果你想獲得更好的結果,你可能會想看看神經網絡。再次,有很多教程,這裏有一個example using tensorflow