2017-01-25 2 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を予測する方法

これは28x28画像ではないため、アレイのプロパティはMNISTデータベースとはかなり異なります。

私は何かのためにそれを行うために線形変換を実行する方法はありますか?あなたが最初のコンボリューションの前にサイズ変更操作を追加することができます

おかげ

+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 ')。変換(' L ')#グレースケールに変換' ' data2 = img.crop((7,0,14,15)) ' ' x = tf ValueError:引数は密なテンソルでなければなりません: - 形状が得られました。 [15、7]、しかし望んでいた[]。 – EduGord

関連する問題