当前位置: 首页 > article >正文

基于python的本地选择图像接入百度云api的图像识别项目

项目灵感来源于老师布置的任务。怎么感觉老师这个题目也是ai生成的~。~题目基于 AI 视觉的本地图像分析脚本任务要求请使用 Python 编写一个通用的图像分析脚本具体流程需满足以下三个步骤* 本地选图程序运行后自动弹出文件选择窗口让用户手动选择一张本地图片。* 云端识别调用视觉大模型API如火山引擎对图片进行分析* 结果输出在终端控制台直接打印出大模型返回的完整分析结果。我的思路是先解决图像识别然后加入弹窗。一、本地图像识别跟连熟悉代码流程首先去百度云实名认证领一下KEY可以简单参考怎么获取API就行Python结合百度API实现高效图像识别从入门到实战-百度开发者中心百度云的图像识别网址如下图像识别-百度智能云教程参考抖音博主跟练一遍理解流程但是他代码有点小bug还有考虑自己电脑的适配性可以问AI我把抖音博主视频链接放在下面7.46 复制打开抖音看看【不说爱你到永久的作品】本身想着懒一点来着的 基于百度智能云的API进行... https://v.douyin.com/bAxLTonFRLc/ kp.qe SLw:/ 04/13注意一下这个是比较两张图片的代码并且没有终端显示所有信息只显示了部分信息。然后下面是我的代码import requests #用于发送http请求 import base64 #用于将图片转换为base64编码以字符串流形式传递 API_KEY 放你的 SECRET_KEY 放你的 通用物体和场景识别 #定义本地图片路径告诉程序那里打开 image_path_1 C:/Users/86135/Desktop/pic_classify/image_1.jpg image_path_2 C:/Users/86135/Desktop/pic_classify/image_2.jpg def get_access_token(): url https://aip.baidubce.com/oauth/2.0/token params { grant_type: client_credentials, client_id: API_KEY, client_secret: SECRET_KEY } return requests.post(url, paramsparams).json().get(access_token) #定义一个参数用于打开路径图片打开后base64编码然后关闭 def recognize_image(image_path): #以二进制形式打开图片文件 f open(image_path, rb) img base64.b64encode(f.read()).decode(utf-8) # 转为字符串 f.close() #使用字典构建请求函数将编码后的图片进行传参 params {image: img} #放置申请到的接口 #access_token [调用鉴权接口获取的token] # 1. 先获取有效的 token access_token get_access_token() if not access_token: print(获取 access_token 失败) return None #定义了请求网址及接口地址 url https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general #将获取到的token拼接到URL后面形成完整请求地址用于接口身份认证 request_url url ?access_token access_token #定义请求头headers用于告诉服务器请求体中的数据是经过URL编码后的表单数据 headers {Content-Type: application/x-www-form-urlencoded} #适用respone.post()方法向接口发送POST请求服务器处理后返回一个响应对象response response requests.post(request_url, dataparams, headersheaders) #如果响应成功则将response.post()方法中内容解析为json文件并打印 if response: #print(response.json()) return response.json() else: #print(请求失败) return None #请求失败就返回 #调用函数识别图片将上方定义的路径传值给result_1和result_2 result_1 recognize_image(image_path_1) result_2 recognize_image(image_path_2) def compare_results(result_1, result_2): #将刚刚传入的值作为形参传入函数 # 先检查是否识别失败 if not result_1 or not result_2: print(识别失败) return #如果都识别成功则比较可信度识别失败则返回“识别失败” #识别成功需要区分不同物体要分清主体和场景以及可信度 #为了方便判断将两张图片进行比较如果可信度超过70%即0.7时就认为高度相似 #可信度大约在50%即0.5则较为相似低于则不像 #首先获取识别中的物体/场景 #items_1 {item{keyword}:item[score] for items in result_1.get(result),[]} #items_2 {item{keyword}:item[score] for items in result_2.get(result),[]} #增加可读性换成段落形式 items_1 {} for item in result_1.get(result, []): keyword item[keyword] score item[score] items_1[keyword] score items_2 {} for item in result_2.get(result, []): keyword item[keyword] score item[score] items_2[keyword] score #现在已经获取到识别出的物体/场景 #找出两图片识别到的物体场景导出来 common_items set(items_1.keys()) set(items_2.keys()) #有了共同物体场景则可以比较可信度 similarity_printed False for item in common_items: #遍历识别到的物体场景 score_1 items_1[item] score_2 items_2[item] if score_1 0.7 and score_2 0.7: print(高度相似) similarity_printed True break elif score_1 0.5 and score_2 0.5: print(比较相似) similarity_printed True break if not similarity_printed and common_items: print(相似度较低) elif not common_items: print(没有共同的识别标签无法直接比较相似度) #可能出现误判添加人工复查 print(\n 第一张图片识别结果) #首先for在字典item遍历用.get()方法在字典中取值去字典中的键 -列表 #key - 按此依据 lamada - 匿名函数 x:x[score]以score为依据进行排序顺序reverse为逆序ture #使用f方法输出信息item[score] - 当前物体场景可信度 item[root] - 分类item[keyword] -名称 for item in sorted(result_1.get(result,[]),keylambda x:x[score],reverseTrue): print(fscore:{item[score]},root: {item[root]},keyword: {item[keyword]}) print(\n 第二张图片识别结果) for item in sorted(result_2.get(result,[]),keylambda x:x[score],reverseTrue): print(fscore:{item[score]},root: {item[root]},keyword: {item[keyword]}) compare_results(result_1, result_2) #最后调用函数比较即可测试图片如下输出如下二、解决弹窗问题参考帖子如下Python 用简单对话框选择文件|极客教程我的代码如下# 导入 tkinter 所有基础组件 from tkinter import * # 导入文件对话框子模块 from tkinter import filedialog # 创建主窗口 root Tk() root.title(选择文件) # 窗口标题 root.geometry(400x200) # 窗口大小 400x200 像素 # 按钮点击事件函数 def choose_file(): # 弹出文件选择对话框返回选中文件的完整路径 file_path filedialog.askopenfilename() # 更新标签显示选中的文件路径 label_result.config(text选中的文件 file_path) # 创建两个不同的标签 # 提示标签 label_hint Label(root, text请手动选择一张图片) # 结果显示标签,稍后会被更新 label_result Label(root, text选中的文件) # 创建按钮 button Button(root, text选择文件, commandchoose_file) # 布局使用 pack 按顺序从上到下放置 label_hint.pack(pady5) # 提示标签上下边距5像素 button.pack(pady10) # 按钮上下边距10像素 label_result.pack(pady5) # 结果显示标签上下边距5像素 # 进入事件循环保持窗口响应 root.mainloop()运行输出如下选完图片后三、综合题目考虑怎么组合代码开始我是先想着组合起来还不是很符合题目要求没有自动弹窗而是手动显示图片识别结果也是只显示了几项。代码如下from tkinter import * from tkinter import filedialog import requests import base64 import os # 用于检查文件是否存在 # 创建主窗口 root Tk() root.title(选择文件) root.geometry(400x200) API_KEY 放你的 SECRET_KEY 放你的 # 全局变量存储图片路径初始为 None image_path None # 按钮点击事件函数 def choose_file(): global image_path file_path filedialog.askopenfilename() if file_path: # 用户确实选择了文件 image_path file_path label_result.config(text选中的文件 file_path) label_hint.config(text请关闭窗口然后识别结果将打印在控制台) else: # 用户取消选择不更新任何内容 pass # 创建标签 label_hint Label(root, text请选择一张图片) label_result Label(root, text选中的文件) # 创建按钮 button Button(root, text选择文件, commandchoose_file) # 布局 label_hint.pack(pady5) button.pack(pady10) label_result.pack(pady5) # 进入事件循环窗口显示等待用户操作 root.mainloop() # ------------------ 以下为识别相关函数在窗口关闭后执行 ------------------ def get_access_token(): url https://aip.baidubce.com/oauth/2.0/token params { grant_type: client_credentials, client_id: API_KEY, client_secret: SECRET_KEY } return requests.post(url, paramsparams).json().get(access_token) def recognize_image(image_path): try: with open(image_path, rb) as f: img base64.b64encode(f.read()).decode(utf-8) except Exception as e: print(f读取图片失败{e}) return None params {image: img} access_token get_access_token() if not access_token: print(获取 access_token 失败) return None url https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general request_url f{url}?access_token{access_token} headers {Content-Type: application/x-www-form-urlencoded} try: response requests.post(request_url, dataparams, headersheaders) if response.status_code 200: return response.json() else: print(fAPI 请求失败状态码{response.status_code}) return None except Exception as e: print(f网络请求异常{e}) return None def print_results(result): if not result or result not in result: print(识别失败未获得有效结果) return print(\n图片识别结果) for item in sorted(result[result], keylambda x: x[score], reverseTrue): print(fscore: {item[score]:.4f}, root: {item[root]}, keyword: {item[keyword]}) # 窗口关闭后检查是否有选中的图片然后识别并打印 if image_path and os.path.exists(image_path): print(f开始识别图片{image_path}) result recognize_image(image_path) print_results(result) else: print(未选择有效图片程序退出。)效果就是程序开始显示一个弹窗要手动选择文件选好后要关闭弹窗才会开始识别图片还行接近要求。可以适当借用AI工具辅助比如查错的时候AI就很聪明。最后按要求实现代码如下import requests import base64 from tkinter import filedialog # 仅用于弹出文件选择对话框 # ---------- 你的 API 密钥 ---------- API_KEY 放你的 SECRET_KEY 放你的 # ---------- 获取 access_token ---------- def get_access_token(): url https://aip.baidubce.com/oauth/2.0/token params { grant_type: client_credentials, client_id: API_KEY, client_secret: SECRET_KEY } return requests.post(url, paramsparams).json().get(access_token) # ---------- 调用百度 API 识别图片 ---------- def recognize_image(image_path): # 读取图片并转为 base64 字符串 with open(image_path, rb) as f: img base64.b64encode(f.read()).decode(utf-8) params {image: img} access_token get_access_token() if not access_token: print(获取 access_token 失败) return None url https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general request_url f{url}?access_token{access_token} headers {Content-Type: application/x-www-form-urlencoded} response requests.post(request_url, dataparams, headersheaders) if response.status_code 200: return response.json() else: print(fAPI 请求失败状态码{response.status_code}) return None # ---------- 主流程 ---------- if __name__ __main__: # 步骤1本地选图弹出文件选择窗口 print(请在弹出的窗口中选择一张本地图片...) file_path filedialog.askopenfilename(title选择一张图片) if not file_path: print(未选择任何文件程序退出。) exit() print(f已选择图片{file_path}) # 步骤2云端识别 print(正在调用云端视觉大模型识别...) result recognize_image(file_path) # 步骤3在终端打印完整分析结果 if result: print(\n 云端识别结果完整 JSON ) # 为了可读性格式化输出 JSON缩进2中文不转义 import json print(json.dumps(result, indent2, ensure_asciiFalse)) else: print(识别失败未获取到结果。)本来可以一键AI的但是这样学不到东西现在也是学会了新技能第一次尝试用接入API之前一直想玩玩但是都没空的。我新手学起来也就几个小时大家最好还是跑一遍流程敲一遍代码理解的更快哟~

相关文章:

基于python的本地选择图像接入百度云api的图像识别项目

项目灵感来源于老师布置的任务。怎么感觉老师这个题目也是ai生成的~。~ 题目:基于 AI 视觉的本地图像分析脚本 任务要求: 请使用 Python 编写一个通用的图像分析脚本,具体流程需满足以下三个步骤: * 本地选图:程序运…...

YOLOv8人脸检测架构解析:高精度实时人脸定位技术实战指南

YOLOv8人脸检测架构解析:高精度实时人脸定位技术实战指南 【免费下载链接】yolov8-face yolov8 face detection with landmark 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8-face YOLOv8-face是基于YOLOv8架构优化的专业人脸检测解决方案&#xff0c…...

关于整数和浮点数在内存中的存储

了解整数和浮点数在内存中的存储可以更有助于我们深入理解知识,在解一些题时也能起到重要的作用,是我们在学C中不可或缺的重要组成部分,接下来我简要介绍一下:首先,整数就是用二进制码存储。在内存中以补码的形式进行存…...

FireRedASR Pro效果展示:长难句识别准确,抗噪能力惊艳

FireRedASR Pro效果展示:长难句识别准确,抗噪能力惊艳 1. 语音识别新标杆 在嘈杂的会议室里,一段夹杂着咳嗽声和键盘敲击的录音正在播放。令人惊讶的是,FireRedASR Pro几乎一字不差地将这段对话转换成了文字,连专业术…...

Omni-Vision Sanctuary 大模型一键部署:Python入门级环境配置实战

Omni-Vision Sanctuary 大模型一键部署:Python入门级环境配置实战 1. 开篇:为什么选择Omni-Vision Sanctuary 如果你刚接触AI大模型,可能会被各种复杂的部署流程吓到。别担心,今天我们要聊的Omni-Vision Sanctuary是个对新手特别…...

终极指南:如何用Python SDK快速集成飞书开放平台API

终极指南:如何用Python SDK快速集成飞书开放平台API 【免费下载链接】oapi-sdk-python Larksuite development interface SDK 项目地址: https://gitcode.com/gh_mirrors/oa/oapi-sdk-python 想要在Python应用中快速集成飞书开放平台的强大功能,却…...

突破3大核心优势:Path of Building革新流放之路Build规划体验

突破3大核心优势:Path of Building革新流放之路Build规划体验 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 在《流放之路》复杂的角色构建系统中&#xff0…...

RobotStudio 仿真软件学习分享02 —— 仿真

目录一、本次学习内容总结二、学习经历(实操操作过程)2.1 机器人模型导入2.2 机器人工具加载与周边设备导入2.3 创建机器人控制系统2.4 创建工件坐标系(Workobject_1)2.5 创建并仿真机器人运动轨迹2.6 仿真视频录制三、补充关键注…...

Visual C++运行库全解析:从问题诊断到高效部署的完整指南

Visual C运行库全解析:从问题诊断到高效部署的完整指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 问题诊断:运行库故障的典型表现与…...

PyCINRAD:解锁中国新一代气象雷达数据的Python利器

PyCINRAD:解锁中国新一代气象雷达数据的Python利器 【免费下载链接】PyCINRAD Decode CINRAD (China New Generation Weather Radar) data and visualize. 项目地址: https://gitcode.com/gh_mirrors/py/PyCINRAD 还在为处理复杂的CINRAD雷达数据格式而烦恼吗…...

Thorium浏览器:重新定义现代网页浏览体验的高性能解决方案

Thorium浏览器:重新定义现代网页浏览体验的高性能解决方案 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top of…...

代码随想录算法训练营第二天 | Leetcode 209.长度最小的子数组 | Leetcode 59.螺旋矩阵 II | 区间和 | 开发商购买土地

209.长度最小的子数组 力扣题目链接:209. 长度最小的子数组 - 力扣(LeetCode)文档讲解:209.长度最小的子数组 | 滑动窗口 | 连续子数组 | 代码随想录视频讲解:拿下滑动窗口! | LeetCode 209 长度最小的子数…...

MiniCPM-o-4.5-nvidia-FlagOS插件开发指南:为谷歌浏览器打造智能阅读与摘要助手

MiniCPM-o-4.5-nvidia-FlagOS插件开发指南:为谷歌浏览器打造智能阅读与摘要助手 你是不是经常在网上冲浪时,面对一篇长文感到头疼,只想快速抓住核心要点?或者遇到一篇外文资料,需要逐句翻译才能理解?又或者…...

C++27协程标准化十大争议点终稿确认(含P2389R5/P2713R2/P2877R2等7项关键paper表决结果与工业界影响评估)

第一章:C27协程标准化演进全景与终稿里程碑意义C27协程标准的正式确立标志着C异步编程范式完成从实验性特性到语言级原语的根本性跃迁。自C20引入co_await、co_yield和co_return三大协程关键字以来,委员会持续通过P2526R4(无栈协程语义精化&a…...

公司 SEO 网站优化服务如何应对搜索引擎算法更新_公司 SEO 网站优化服务如何提高网站的曝光度

公司 SEO 网站优化服务如何应对搜索引擎算法更新 在数字化时代,搜索引擎算法的更新频繁,给公司的SEO网站优化服务带来了不小的挑战。搜索引擎不断优化其算法,以提升用户体验和搜索结果的相关性。这种变化往往会对网站的排名和曝光度产生直接…...

MindSpore 环境配置完全指南

1 安装与初始化 # 全局安装 OpenSpec npm install -g fission-ai/openspeclatest # 在项目目录下初始化 cd /path/to/your-project openspec init 初始化时,OpenSpec 会提示你选择使用的 AI 工具(Claude Code、Cursor、Trae、Qoder 等)。 3 O…...

突破音频格式壁垒:QMCDecoder开源工具实现无损音频自由转换

突破音频格式壁垒:QMCDecoder开源工具实现无损音频自由转换 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 问题:当音乐被数字锁链束缚——QMC格式的…...

鸣潮终极自动化解决方案:智能图像识别实现高效游戏体验

鸣潮终极自动化解决方案:智能图像识别实现高效游戏体验 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves ok-ww是一款基于…...

新手友好:无需配置环境,在快马平台编写第一行open claw控制代码

今天想和大家分享一个特别适合新手入门的Open Claw控制小项目。作为一个刚接触机器人控制的小白,我发现在InsCode(快马)平台上可以轻松实现机械爪的基础控制,完全不需要配置复杂的环境,特别适合零基础学习。 Open Claw是什么? Ope…...

5MB轻量级中文字体:WenQuanYi Micro Hei完全指南

5MB轻量级中文字体:WenQuanYi Micro Hei完全指南 【免费下载链接】fonts-wqy-microhei Debian package for WenQuanYi Micro Hei (mirror of https://anonscm.debian.org/git/pkg-fonts/fonts-wqy-microhei.git) 项目地址: https://gitcode.com/gh_mirrors/fo/fon…...

实战利器:基于快马平台为你的车辆检测项目定制专属labelimg标注工具

在AI项目开发中,数据标注往往是决定模型效果的关键环节。最近我在做一个车辆检测项目时,发现通用的标注工具无法满足特定需求,于是尝试用InsCode(快马)平台快速定制了一个专属的labelimg工具。整个过程比想象中顺利,分享几个实战要…...

ComfyUI插件管理工具:构建稳定高效的AI创作环境

ComfyUI插件管理工具:构建稳定高效的AI创作环境 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom node…...

Windows硬件指纹修改指南:EASY-HWID-SPOOFER的实用解析

Windows硬件指纹修改指南:EASY-HWID-SPOOFER的实用解析 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 你是否曾因软件试用期结束而烦恼?是否担心网站通过硬…...

显卡显存稳定性终极检测指南:memtest_vulkan免费工具快速诊断GPU问题

显卡显存稳定性终极检测指南:memtest_vulkan免费工具快速诊断GPU问题 【免费下载链接】memtest_vulkan Vulkan compute tool for testing video memory stability 项目地址: https://gitcode.com/gh_mirrors/me/memtest_vulkan 核心关键词:显卡显…...

面试官:包装类型的缓存机制了解么?

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

终极指南:如何用BallonTranslator快速完成漫画翻译?

终极指南:如何用BallonTranslator快速完成漫画翻译? 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by deeplearning 项目地址…...

如何统计不同电话号码的个数?—位图法

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

记录一次线上问题排查:JDK序列化问题

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

GHelper终极指南:免费解放华硕笔记本性能的完整解决方案

GHelper终极指南:免费解放华硕笔记本性能的完整解决方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, …...

MSF(etasploit Framework)工具使用与实战

MSF工具介绍工具简介全称Metasploit Framework,是漏洞研究、渗透测试、漏洞验证的一体化平台,主要有以下五大核心模块: Auxiliary(辅助模块):漏洞扫描、信息收集、端口扫描、服务探测(无攻击载荷…...