使用JavaSwing调用百度API实现动物植物识别

news/2024/4/20 3:11:10/文章来源:https://www.cnblogs.com/1774323810com/p/16856043.html

pom.xml依赖:

    <dependencies><dependency><groupId>com.baidu.aip</groupId><artifactId>java-sdk</artifactId><version>4.16.11</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.48</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.4</version></dependency></dependencies>

 

sss: (这个使用来获取token的)

package Jframe;import org.json.JSONObject;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;public class ssss {public static String getAuth() {// 官网获取的 API Key 更新为你注册的String clientId = "*******";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "***********";return getAuth(clientId, clientSecret);}/*** 获取API访问token* 该token有一定的有效期,需要自行管理,当失效时需重新获取.* @param ak - 百度云官网获取的 API Key* @param sk - 百度云官网获取的 Secret Key* @return assess_token 示例:* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"*/public static String getAuth(String ak, String sk) {// 获取token地址String authHost = "https://aip.baidubce.com/oauth/2.0/token?";String getAccessTokenUrl = authHost// 1. grant_type为固定参数+ "grant_type=client_credentials"// 2. 官网获取的 API Key+ "&client_id=" + ak// 3. 官网获取的 Secret Key+ "&client_secret=" + sk;try {URL realUrl = new URL(getAccessTokenUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();connection.setRequestMethod("GET");connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.err.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String result = "";String line;while ((line = in.readLine()) != null) {result += line;}/*** 返回结果示例*/System.err.println("result:" + result);JSONObject jsonObject = new JSONObject(result);String access_token = jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("获取token失败!");e.printStackTrace(System.err);}return null;}public static void main(String[] args) {getAuth();}
}

 

interpt:(调用接口)

package Jframe;import bean.Animal;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baidu.aip.imageclassify.AipImageClassify;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.json.JSONObject;import java.io.BufferedReader;
import java.util.HashMap;
import java.util.List;public class interpt {public static String  Animal(AipImageClassify client,String path) {// 传入可选参数调用接口HashMap<String, String> options = new HashMap<String, String>();options.put("top_num", "1");// 参数为本地路径JSONObject res = client.animalDetect(path, options);/*** JSON转成字串符*/String result1 = res.get("result").toString();JSONArray arr = JSON.parseArray(result1);String jsonObject1 = arr.get(0).toString();com.alibaba.fastjson.JSONObject obj = JSON.parseObject(jsonObject1);String name = obj.getString("name");if (name.equals("非动物")){if (sample(client,path).equals("非植物")){return "非动物,非植物";}elsereturn sample(client,path);}return name;
//        System.out.println(res.toString(2));
    }public static String sample(AipImageClassify client,String path) {// 传入可选参数调用接口HashMap<String, String> options = new HashMap<String, String>();options.put("baike_num", "1");// 参数为本地路径JSONObject res = client.plantDetect(path, options);String result2 = res.get("result").toString();JSONArray arr = JSON.parseArray(result2);String jsonObject1 = arr.get(0).toString();com.alibaba.fastjson.JSONObject obj = JSON.parseObject(jsonObject1);String name = obj.getString("name");return name;
//        System.out.println(res.toString(2));
    }
}

 

main:(页面的实现)

package Jframe;import com.baidu.aip.imageclassify.AipImageClassify;import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;public class main {public static final String APP_ID = "******";public static final String API_KEY = "*********";public static final String SECRET_KEY = "************";public static String file1;public static void main(String[] args) {AipImageClassify aipImageClassify=new AipImageClassify(APP_ID,API_KEY,SECRET_KEY);JFrame jFrame=new JFrame("图片识别系统");jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jFrame.setLayout(null);//初始化界面jFrame.setSize(2560,1440);
//        jFrame.setLocation(320,240);JFileChooser jFileChooser=new JFileChooser();jFileChooser.setFileFilter(new FileFilter() {@Overridepublic boolean accept(File f) {return true;}@Overridepublic String getDescription() {return null;}});// 创建登录按钮JButton SCButton = new JButton("上传图片");JLabel label3 =new JLabel("");label3.setBounds(300,100,200,50);SCButton.setBounds(50, 225, 100, 50);JLabel jLabel = new JLabel();ImageIcon i = new ImageIcon("");//设置ImageIcon
        jLabel.setIcon(i);//label的大小设置为ImageIcon,否则显示不完整JButton WLButton=new JButton("上传网络验证");WLButton.setBounds(SCButton.getX()+200,SCButton.getY(),150,50);SCButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {
//                JOptionPane.showConfirmDialog(null, "上传图片");int returnVal = jFileChooser.showOpenDialog(jFrame);File file=jFileChooser.getSelectedFile();if (returnVal==JFileChooser.APPROVE_OPTION){JOptionPane.showMessageDialog(jFrame, "计划打开文件:" + file.getAbsolutePath());file1=file.getAbsolutePath();file1.replaceAll("\\\\", "/");ImageIcon imageIcon=new ImageIcon(file1);Image image=imageIcon.getImage();//获取此图标的Imageimage=image.getScaledInstance(350,200,Image.SCALE_AREA_AVERAGING);//将image压缩imageIcon.setImage(image);//将压缩以后的照片在传回去
                    jLabel.setIcon(imageIcon);jLabel.setBounds(25,25,imageIcon.getIconWidth(),imageIcon.getIconHeight());SCButton.setBounds(50, 50+imageIcon.getIconHeight(), 100, 50);WLButton.setBounds(175, 50+imageIcon.getIconHeight(), 100, 50);label3.setBounds(50+imageIcon.getIconWidth(),100,800,100);}}});WLButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {
//               JOptionPane.showConfirmDialog(null, "上传网络验证");String name=interpt.Animal(aipImageClassify,file1);
//                System.out.println(name);label3.setText("经过网络查询这个是:"+name);label3.setFont(new Font(Font.DIALOG,1,25));}});jFrame.add(WLButton);jFrame.add(SCButton);jFrame.add(jLabel);jFrame.add(label3);jFrame.setVisible(true);}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_411657.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Skywalking9.2.0监控浏览器

Skywalking9.2.0监控浏览器 安装skywalking-client-js npm install skywalking-client-js --save在main.js添加信息 import ClientMonitor from skywalking-client-jsrouter.afterEach(() > {ClientMonitor.setPerformance({service: 服务名,serviceVersion: 版本号,pagePat…

基于模糊小波神经网络的空中目标威胁评估(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 在现代战争中, 随着信息化和智能化的飞速发展, 以及作战环境的日益复杂, 实时而准确地评估目标威胁, 不仅为空战决策提供科学的…

程序人生:技术水平低,就这还敢写自动化项目实战经验丰富?

今年部门要招两个自动化测试&#xff0c;这几个月我面试了几十位候选人。发现一个很奇怪的现象&#xff0c;面试中一问到元素定位、框架api、脚本编写之类的&#xff0c;很多候选人都对答如流。但是一问到实际项目&#xff0c;比如 “如何从0开始搭建自动化体系”、“如果让你来…

资深大牛纯手写RabbitMQ 核心笔记,还有谁?

RabbitMQ简介 RabbitMQ是消息代理(Message Broker)&#xff0c;它支持多种异步消息处理方式&#xff0c;最常见的有&#xff1a; Work Queue&#xff1a;将消息缓存到一个队列&#xff0c;默认情况下&#xff0c;多个worker按照Round Robin的方式处理队列中的消息。每个消息只…

CART回归树算法

【题目1】 表1为拖欠贷款人员训练样本数据集,使用CART算法基于该表数据构造决策树模型,并使用表2中测试样本集确定剪枝后的最优子树。 表1 拖欠贷款人员训练样本数据集编号 房产状况 婚姻情况 年收(千元) 拖欠贷款1 是 单身 125 否2 否 已婚 100 否3 否 单身 70 否4 是 已婚…

一本通1064;奥运奖牌计数

#include <iostream> using namespace std; int main() {int n, Jin, Yin, Tong;int JinSum 0, YinSum 0, TongSum 0, sum;cin >> n;for (int i 1; i < n; i) // 循环n次{cin >> Jin >> Yin >> Tong; // 输入一天获得的金银铜牌数JinSum …

IR信息检索前沿梳理

1. 检索预训练 1.1 PROP: Pre-training with Representative Words Prediction for Ad-hoc Retrieval three types of pre-training tasks have been proposed including: Inverse Cloze Task (ICT): The query is a sentence randomly drawn from the passage and the docu…

全志F1C芯片参数对比,供查阅

F1C600特性介绍 组合32M DDR1&#xff0c;QFN编解码模式&#xff0c;生产音频核心板&#xff08;CPUNORWIFI&#xff09;在WIFI站下播放的功率约0.5W组合I2S、SPDIF、CODEC等多功能接口支持全格式音频解码芯片 F1C600参数介绍 中央处理器 ARM926EJ-S 内存 SIP DDR1 SD2.0…

月入18000,0基础转行软件测试,实现薪资翻倍我只用了135天

在没做测试之前&#xff0c;我一直是个没自信的人&#xff0c;因为工作不稳定&#xff0c;收入也不高。 大学毕业做了2年酒店管理&#xff0c;月入4000提成&#xff0c;还经常上夜班&#xff0c;熬人又伤身体&#xff0c;于是不想再做服务行业&#xff0c;就转行做了电销。这之…

本地数据库IndexedDB - 学员管理系统之列表管理(二)

IndexedDB是浏览器提供的本地数据库&#xff0c;它可以被网页脚本创建和操作。IndexedDB允许存储大量数据&#xff0c;提供查找接口&#xff0c;还能建立索引。这些都是LocalStorage或Cookie不具备的。就数据库类型而言&#xff0c;IndexedDB不属于关系型数据库&#xff08;不支…

使用VMware16克隆功能快速准备CentOS 7.9操作系统集群

记录&#xff1a;305 场景&#xff1a;使用VMware16克隆功能快速准备CentOS 7.9操作系统集群&#xff0c;主要内容&#xff1a;VMware16克隆功能功能使用、CentOS 7.9操作系统常用指令使用、制作本地yum源、安装JDK、配置集群NTP时间同步等。 版本&#xff1a; 虚拟机工具&a…

数据结构-难点突破(C++/Java详解实现串匹配算法KMP,next数组求法,KMP算法优化nextval数组)

文章目录1. 暴力匹配算法BF2. KMP算法next数组求法Java代码&#xff1a;C代码&#xff1a;KMP算法优化nextval数组1. 暴力匹配算法BF 在了解KMP算法前&#xff0c;就必须介绍串的暴力匹配算法&#xff08;BF算法&#xff09; BF算法&#xff0c;即暴力(Brute Force)算法&…

大赛征集令|首届“万应杯”低代码应用开发大赛报名开启啦!

探索&#xff0c;寻觅低码边界。 创新&#xff0c;做成未曾有人做过的事。 首届“万应杯”低代码应用开发大赛 报名正式启动啦&#xff01; 万元现金奖杯/证书项目转售收益 丰厚奖励&#xff0c;邀你来战&#xff01; 大赛时间 低码掘金&#xff0c;就在此时&#xff01; …

MySQL高级SQL语句(一)

MySQL高级SQL语句&#xff08;一&#xff09;MySQL高级SQL语句&#xff08;一&#xff09;一、高级SQL语句&#xff08;进阶查询&#xff09;1.1 select1.2 distinct1.3 where1.4 and 、or1.5 in1.6 between1.7 通配符1.8 like1.9 order by二、函数2.1 数学函数2.2 聚合函数2.3…

MSDC 4.3 接口规范(26)

MSDC 4.3 接口规范&#xff08;26&#xff09;7.4 组呼业务管理7.4.1 服务状态7.4.2 启动组呼业务7.4.2.1 接口函数7.4.2.2 先决条件7.4.2.3 说明7.4.2.4 调用流程7.4.2.4.1 启动组呼业务7.4.2.4.2 无法启动服务7.4.3 停止组呼服务7.4.3.1 接口函数7.4.3.2 先决条件7.4.3.3 说明…

SH-SSS丨《端到端音视频说话人日志网络》论文线上分享

SH Symposium Series on Speech (SH SSS 2022) SH SSS 是由语音之家打造的AI语音技术相关的前沿论文成果分享平台。 来自AI语音技术领域的优秀论文作者、专家学者&#xff0c;用最精炼的表达来解读最新的高质量论文。 分享的论文成果来自国内外顶级会议收录的优秀文章、前沿…

系统kafka不消费-topic问题

测试告诉说kafka的topic列表里面新加入了一个topic&#xff0c;然后就不消费数据了&#xff1b; 自己验证了一下&#xff0c;确实这样&#xff0c;如果去掉新的topic&#xff0c;数据就可以正常消费&#xff1b; 然后我查看定义发现&#xff0c;topicA是1个分区&#xff1b; …

段页式内存管理

文章目录分页、分段的优缺点分析段页式管理分段分页段页式管理的逻辑地址结构段页式存储的段表、页表的地址变换分页、分段的优缺点分析 分页管理它的缺点就是不方便按照逻辑块实现信息的共享和保护而分段管理&#xff0c;如果段长过大&#xff0c;为其分配很大的连续空间会很不…

WebDAV之葫芦儿·派盘+纸间书摘

纸间书摘 支持webdav方式连接葫芦儿派盘。 是专为喜欢做读书笔记的小伙伴量身打造的专属书摘app,不仅仅可以从别的app中导入图书,并且还能来帮助你选择性复制可以来轻松的搞定哦 所有功能完全免费,没有广告,不限制识别次数。 多种备份,本地备份和基于WebDAV协议的云端…