2017-01-25 33 views
0
import numpy as np 
import scipy.ndimage 
from PIL import Image 
import urllib.request 

url = 'http://static.bn-static.com/pg/0rmrKX8jCvpmF8b7ab+coivEApi2iNNpgVTrfyFFA0g==.gif' 
img = Image.open(urllib.request.urlopen((url))) 
img = img.convert('1').convert('L') #convert to graysclae 

# Optional to visualize it all: 
# plt.imshow(img) 
# plt.show() 
# a = array(img) 
# a = a.transpose() 
# np.place(a,a==0,1) 
# np.place(a,a==255,0) 

# Croping only one number out of it and vectorize it with binary values. 
data = array(img.crop((7, 0, 14, 15))) 
np.place(data, data == 0, 1) 
np.place(data, data == 255, 0) 
plt.imshow(data, cmap=plt.cm.binary) 
# visualize crop 
plt.show() 
# visualize matrix 
data 

我想用Tensorflow或任何需要預測哪些號碼是在這種剪裁的圖像,所以我可以繼續這樣做,直到所有的數字可以預料到的。Python的 - 如何使用MNIST預測np.darray具有不同的形狀

數組屬性與MNIST數據庫有很大不同,因爲這不是28x28圖像。

有沒有什麼辦法可以找出線性變換來爲我或某物做些什麼?

感謝

+0

正在使用MNIST培訓的模型很重要嗎?您可以使用任何可用於Python的光學字符識別(OCR)庫來更輕鬆地實現相同的結果。特別是考慮到你的號碼不是手寫的。 –

+0

@MartinValgur任何解決這個問題的答案都會非常有幫助,但如果我能夠學習如何調整MNIST的內容來識別來自其​​他來源的數字,這將是非常好的。 順便說一句我已經嘗試pytesseract和我結束了許多不匹配的數字。 – EduGord

回答

1

您可以第一卷積之前增加一個調整操作:

x = tf.image.resize_images(x, [28, 28]) 

因此,可以接受不同的圖像大小。確保你的輸入陣列有形狀:

x.get_shape().as_list() == [ None, width, height, channels] 
+0

感謝您的回覆,但我不確定如何實施您所說的話。我很抱歉,但我沒有在Python和Tensorflow方面經驗豐富。 我試過了: 'url ='http://static.bn-static.com/pg/0rmrKX8jCvpmF8b7ab+coivEApi2iNNpgVTrfyFFA0g ==。gif'' 'img = Image.open(urllib.request.urlopen((url)) )' 'img = img.convert('1')。convert('L')#convert to grayys' 'data2 = img.crop(((7,0,14,15))' 'x = tf .image.resize_images(data2,[28,28])' 但我得到:ValueError:參數必須是一個稠密張量: - 得到形狀[15,7],但想要[]。 – EduGord

相關問題