2016-07-14 10 views
1

Derzeit bin Fütterung ich den Test für Inception v3 mit:-Feed Inception mit OpenCV Bild

image_data = tf.gfile.FastGFile(image_path, 'rb').read() 
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0') 

predictions = sess.run(softmax_tensor, \ 
         {'DecodeJpeg/contents:0': image_data}) 

Aber stattdessen muss ich das Bild zuzuschneiden, bevor es dem CNN Fütterung, also verwende ich imread und Zuschneiden die Matrix. Aber wenn ich es mache, kann ich es nicht als image_data verwenden, da es eine jpeg-Binärdatei erwartet.

+0

Eine schnelle Lösung sollte sein: Ihre Matte beschneiden, sie in JPEG in einem temporären Ordner speichern und das neue Bild lesen. Ich kenne Tensorflow nicht, aber ich denke, es sollte möglich sein, ein decodiertes Bild direkt aus dem Speicher zu lesen. – Catree

+0

Das ist, was ich als eine schnelle Lösung getan habe, aber es fehlt der ganze Punkt der Verwendung des TensorFlow mit GPU, indem viele Bilder auf die HD geschrieben werden. – BernardoGO

Antwort

0

Gelöst mit PIL anstelle von OpenCV. Es ist möglich, es direkt zu füttern und auch die Zeichenfunktion scheint besser zu sein als die, die ich für OpenCV verwendet habe.

img = Image.open(tstImg) 
image = img.resize((1936, 1296), Image.ANTIALIAS) 
crop_img = image.crop((x, y, x+x_adds, y+y_adds)) 
predictions = sess.run(softmax_tensor, {'DecodeJpeg:0': crop_img}) 
1
predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': cv2.imencode('.jpg', image_data)[1].tostring()})