关于Java通过socket调用python图像识别算法使用总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于Java通过socket调用python图像识别算法使用总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2094字,纯文字阅读大概需要3分钟。
内容图文
![关于Java通过socket调用python图像识别算法使用总结](/upload/InfoBanner/zyjiaocheng/620/acf2fc7770dc4ef181aafd5e8a2e2dcb.jpg)
1、业务背景
我们需要实现一个在java中获取数据库的图片并调用python图像识别算法对图片进行相应识别,然后将识别后的图片返回并存储的功能。
2、socket是啥?
socket是用户进程与Tcp/Ip协议的中间人,即位于应用层与传输层之间。
3、为什么要使用socket?
由于java无法直接调用python编写的接口,因此可以通过socket实现java客户端与python服务端间的通信
4、java客户端使用socket基本流程
try { socket = new Socket(HOST, PORT); // 2、获取输出流对象 System.out.println("准备发送数据。。。"); writer = new PrintWriter(socket.getOutputStream()); // 3、发送json数据 writer.print(jsonObject); writer.flush(); //传送json结束 // 4、开始发送图片 InputStream fis = new ByteArrayInputStream(picturedata); DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); BufferedImage bi; try { bi = ImageIO.read(fis); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bi,"jpg",baos); byte[] bytes = baos.toByteArray(); byte[] sendBytes = new byte[1024]; int count = bytes.length/1024 + 1; for (int i = 0; i < count; i++) { sendBytes = new byte[1024]; if (i == count-1){ System.arraycopy(bytes,1024*i,sendBytes,0,bytes.length%1024); dos.write(sendBytes); }else { System.arraycopy(bytes,1024*i,sendBytes,0,1024); dos.write(sendBytes); } } }catch (Exception e){ e.printStackTrace(); } // 发送图片结束 System.out.println("发送成功。"); // 5、获取服务进程的输入流 System.out.println("开始接收json数据。。。"); br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8")); char[] rDataLen = new char[100]; br.read(rDataLen, 0, 100); String response = new String(rDataLen); JSONObject array = JSONObject.parseObject(response.trim()); System.out.println("开始接收图片。。。"); DataInputStream dis = new DataInputStream(socket.getInputStream()); int imageSize = Integer.parseInt(jsonObject.get("file_size").toString()); byte[] buff = new byte[imageSize];for (int i = 0; i < imageSize; i++) { dis.read(buff,i,1); } System.out.println("接收图片结束"); } catch (Exception e) { e.printStackTrace(); }finally { try { if(socket!=null) { socket.close(); } }catch (IOException e) { e.printStackTrace(); } System.out.println("远程接口调用结束."); }
内容总结
以上是互联网集市为您收集整理的关于Java通过socket调用python图像识别算法使用总结全部内容,希望文章能够帮你解决关于Java通过socket调用python图像识别算法使用总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。