一、python检测到的图片能够在平台进行展示
开发环境:
电脑一:python实现人体检测,并实时保存有异常动作的图片,
电脑二:Java实现平台开发
问题描述:
电脑一检测到异常图片时,将该异常图片和其他信息存储到数据库中且平台的前端页面能够正常展示电脑一的本地图片。
实现思路:
- python实时保存检测到的异常图片
if task.action_preds:
time_now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
str_img_name = str(time_now) + ".jpg"
save_img_path = os.path.join(abnor_path, str_img_name)
# abnor_path异常图片的路径 'D:/work_python/flask-video-web/abnor_picture/'
for p in task.action_preds:
for label in p:
if label[0] == 'fall down':
for ii in task.frames:
behavior = '3' # '跌倒'
ab_path = save_img_path
cv2.imwrite(save_img_path, ii) # 保存异常图片
- python将图片传给Java接口,之后将图片和其他信息存储到数据库
if behavior and ab_path:
# 1.python调用Java接口,将图片传给Java
url = 'http://127.0.0.1:8080/upload' # 改为Java写的接口
files = {"code": "200", 'file': (str_img_name,open(ab_path, 'rb'), 'image/jpeg')}
r = requests.post(url, files=files)
# 2.Java返回其接收到的图片名称
resp = json.dumps(r.text)
# 3.python将收到的图片和其他信息存储到数据库
sql1 = 'INSERT INTO avatar(type,avatar,ip_id,start_time) VALUES(%s,%s,%s,%s)' # 数据库的SQL语句
curosr = conn()
curosr.execute(sql1, (behavior, resp, ip, current_time))
参考链接:python和java Http传输图片的简单实现
之前写接口走了很多弯路,非常感谢该作者的文章。
二、python接收Java传的数据
问题描述:
客户端有增删数据操作,Java需将增删的数据传给python
实现思路:
- python服务端
import socket
adress = ('', 4000) # Java访问的接口是python电脑的IP
# 创建socket对象,同时设置通信模式,AF_INET代表IPv4,SOCK_STREAM代表流式socket,使用的是tcp协议
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(address)
# 开始监听,5位最大挂起的连接数
server.listen(5)
# 无限循环,实现反复接收请求
while True:
# accept()方法被动接受客户端连接,阻塞,等待连接. client是客户端的socket对象,可以实现消息的接收和发送,addr表示客户端的地址
client, addr = server.accept()
data = client.recv(13) # 代表从发过来的数据中读取13byte的数据
data1 = client.recv(4) # 再接收4byte数据
client.sendall(b'1') # 给客户端回消息,必须是byte类型
client.close() # 关闭连接
server.close()
- Java客户端
代码参考链接:网络编程之–socket实现python和java通信
注意!!!Java开发人员也需用socket进行对接