java post image,Java使用HttpURLConnection发出POST请求并将图像发送到s

我正在做一个团队软件项目,其中包括为一个叫做SeeFood的基于服务器的人工智能设计一个客户端。你可以给它发张照片,它会告诉你照片里是否有食物。我们目前在服务器上部署了一个python脚本,该脚本接受httppost请求并使用给定的图像调用AI。你可以拨打34.236.92.140查询。在

我现在面临的挑战是让我的Java客户机能够向服务器发送图像,对其进行分析,并获得响应。我一直在尝试不同的东西,包括Apache HttpComponents库,但是当我运行代码时,我不断地从服务器获取响应代码:400 BAD REQUEST

Server: Apache/2.4.27 (Amazon) PHP/5.6.30 mod_wsgi/3.5 Python/2.7.12

Connection: close

Content-Length: 192

Date: Fri, 17 Nov 2017 16:11:28 GMT

Content-Type: text/html; charset=UTF-8

从对HTTP代码400的研究来看,服务器不喜欢我格式化POST请求的方式。有没有人有使用HTTP服务器和通过POST发送图像的经验?同样,您可以在34.236.92.140上尝试服务器端应用程序。我还将包括Java客户机和Python服务器代码。在

Java客户端(exportImages和readResultsToString方法下的相关代码):

^{pr2}$

Python服务器:from flask import Flask, send_from_directory, request

from werkzeug.utils import secure_filename

import argparse

import numpy as np

import tensorflow as tf

from PIL import Image

import sys

app = Flask(__name__)

'''

method for uploading files to the server

via http POST request

'''

@app.route('/upload', methods=['GET', 'POST'])

def upload_file():

if request.method == 'POST':

f = request.files['file']

f.save(secure_filename(f.filename))

print f.filename

score = ai_call(f.filename)

#save file in location based on score

return score

return '''

Upload new File

Upload new File

'''

'''

method for returning files from the server based on filename

'''

@app.route('/download/')

def get_file(file_name):

return app.send_static_file(file_name)

'''

index page

needs to be motifed to return default images

'''

@app.route('/')

def index():

find_food

return 'Hello World'

"""

A script to ask SeeFood if it sees food in the image at

path specified by the command line argument.

"""

def ai_call(system_arg):

#parser = argparse.ArgumentParser(description="Ask SeeFood if there is

food in the image provided.")

#parser.add_argument('image_path', help="The full path to an image file stored on disk.")

#args = parser.parse_args()

# The script assumes the args are perfect, this will crash and burn otherwise.

###### Initialization code - we only need to run this once and keep in memory.

sess = tf.Session()

saver = tf.train.import_meta_graph('saved_model/model_epoch5.ckpt.meta')

saver.restore(sess, tf.train.latest_checkpoint('saved_model/'))

graph = tf.get_default_graph()

x_input = graph.get_tensor_by_name('Input_xn/Placeholder:0')

keep_prob = graph.get_tensor_by_name('Placeholder:0')

class_scores = graph.get_tensor_by_name("fc8/fc8:0")

######

# Work in RGBA space (A=alpha) since png's come in as RGBA, jpeg come in as RGB

# so convert everything to RGBA and then to RGB.

#image_path = args.image_path

image_path = system_arg

image = Image.open(image_path).convert('RGB')

image = image.resize((227, 227), Image.BILINEAR)

img_tensor = [np.asarray(image, dtype=np.float32)]

print 'looking for food in '+ image_path

#Run the image in the model.

scores = sess.run(class_scores, {x_input: img_tensor, keep_prob: 1.})

print scores

# if np.argmax = 0; then the first class_score was higher, e.g., the model sees food.

# if np.argmax = 1; then the second class_score was higher, e.g., the model does not see food.

if np.argmax(scores) == 1:

print "No food here... :disappointed: "

else:

print "Oh yes... I see food! :D"

return str(scores)

if __name__ == '__main__':

app.debug = True

app.run()

感谢您能提供的任何帮助。提前谢谢你。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值