Python入门项目:调用Lingbot-Dretrain-ViTL-14 API制作你的第一张AI深度图

news2026/3/13 23:20:39
Python入门项目调用Lingbot-Depth-ViTL-14 API制作你的第一张AI深度图想用Python做点有趣又酷炫的东西吗今天咱们不写“Hello World”也不做计算器而是直接上手用几行代码让AI帮你分析图片的深度信息生成一张有立体感的深度图。听起来是不是比传统入门项目有意思多了这个项目特别适合刚接触Python的朋友。你不需要懂复杂的AI原理也不用自己训练模型我们直接调用一个已经部署好的、功能强大的模型API。整个过程就像点外卖一样你准备好图片下单告诉API你的要求备注然后等着它把处理好的深度图外卖送回来。我们会一步步带你完成从安装一个必要的库开始到写出完整的脚本最后看到自己生成的成果。跟着做下来你不仅能学会如何用Python和网络API打交道还能立刻获得一个视觉化的、有成就感的作品。1. 开始前的简单准备在写代码之前我们需要确保手头有两样东西一个是能运行Python的环境另一个是这次要用到的“武器库”。1.1 检查你的Python环境首先打开你的命令行工具Windows上是CMD或PowerShellMac或Linux上是终端。输入下面的命令并回车python --version或者python3 --version如果屏幕上显示了像Python 3.8.10这样的版本号并且数字是以3开头的那么恭喜你第一步已经完成了。如果提示“找不到命令”那你需要先安装Python。可以去Python官网下载最新版本安装时记得勾选“Add Python to PATH”这个选项。1.2 安装唯一的必备库requests我们这个项目只需要一个额外的Python库叫做requests。它的作用就是让Python能够轻松地访问网页和我们今天要调用的API进行“对话”。安装它非常简单还是在命令行里输入pip install requests如果你使用的是Python3并且上述命令不工作可以试试pip3 install requests看到类似“Successfully installed requests-2.31.0”的提示就表示安装成功了。2. 理解我们要做什么API调用在动手写代码前花两分钟了解一下我们要做的事情这样写起来会更清楚。你可以把我们要调用的Lingbot-Depth-ViTL-14API 想象成一个在云端24小时工作的“图片深度分析专家”。它已经用海量图片训练好了特别擅长看出一张图片里哪个物体离得近哪个离得远。我们的工作流程很简单准备图片选一张你电脑上的图片比如你拍的照片、下载的壁纸。发送请求用Python的requests库把这张图片打包通过网络发送给这位“云端专家”。接收结果“专家”收到图片后快速分析生成一张对应的深度图再通过网络传回给你的电脑。保存结果你的Python脚本接收到传回来的深度图数据把它保存成一个新的图片文件。深度图看起来通常是黑白的越亮的地方代表离“相机”越近越暗的地方代表离得越远。通过它你可以用一种全新的视角来“理解”一张图片的立体结构。3. 一步步编写你的第一个AI图片处理脚本现在打开你喜欢的代码编辑器比如VSCode、PyCharm甚至记事本都可以新建一个文件命名为create_depth_map.py。我们将分块来编写这个脚本。3.1 引入工具并设置API地址脚本的开头我们需要告诉Python要使用哪些工具以及我们要联系谁。import requests import os # 这是我们要调用的API地址它指向了已经部署好的深度估计模型 API_URL https://your-deployment-url.com/predictions/lingbot-depth-vitl-14 # 请将上面的地址替换为你实际获取的、可访问的API端点这里有两行import语句导入了我们需要的模块。requests库用来进行网络通信os库则用来处理文件和路径比如稍后检查图片是否存在。API_URL是一个变量里面存放了API的地址。请注意这里的地址是一个示例你需要将它替换成你实际拥有的、有效的API端点地址。3.2 准备要处理的图片接下来我们写一个函数来处理图片文件。它的任务是检查我们指定的图片是否存在并以API能够接受的方式打开它。def prepare_image(image_path): 准备要发送给API的图片文件。 参数: image_path (str): 本地图片文件的路径例如 ./my_photo.jpg 返回: tuple: 如果成功返回 (文件对象, 文件名)如果失败返回 (None, None) # 检查文件是否存在 if not os.path.isfile(image_path): print(f错误找不到图片文件 {image_path}请检查路径是否正确。) return None, None # 尝试以二进制读取模式打开图片 try: # 从路径中提取文件名 filename os.path.basename(image_path) # 以二进制模式打开文件这是发送图片数据所必需的 image_file open(image_path, rb) print(f成功加载图片: {filename}) return image_file, filename except Exception as e: print(f打开图片时出错: {e}) return None, None这个函数做了几件事首先检查路径是否有效避免程序因为找不到文件而崩溃。然后它用‘rb’模式read binary二进制读取打开图片因为网络传输需要原始的二进制数据。最后它返回文件对象和文件名方便后续使用。3.3 核心步骤调用API生成深度图这是整个脚本最核心的部分我们将把图片发送出去并等待深度图返回。def generate_depth_map(api_url, image_file, filename): 调用深度估计API并获取生成的深度图。 参数: api_url (str): API的完整地址 image_file (file object): 已打开的图片文件对象 filename (str): 原始图片的文件名 返回: bytes or None: 如果成功返回深度图的二进制数据失败则返回None # 准备要发送的数据。对于文件上传API通常期望一个‘files’字典 files {file: (filename, image_file, image/jpeg)} # 假设是JPEG图片 print(正在调用AI API生成深度图请稍候...) try: # 向API地址发送一个POST请求并附上我们的图片文件 response requests.post(api_url, filesfiles) # 检查请求是否成功HTTP状态码为200表示成功 if response.status_code 200: print(API调用成功深度图数据已接收。) # 返回响应的原始内容也就是深度图的二进制数据 return response.content else: # 如果状态码不是200说明请求可能出了问题 print(fAPI调用失败状态码: {response.status_code}) print(f错误信息: {response.text[:200]}) # 打印前200个字符的错误信息 return None except requests.exceptions.RequestException as e: # 处理网络连接错误、超时等问题 print(f网络请求过程中发生错误: {e}) return None finally: # 无论成功与否都记得关闭已经打开的图片文件 image_file.close()这段代码的关键是requests.post(api_url, filesfiles)这一行。它构造了一个网络请求将我们的图片封装在files参数里发送出去。之后我们仔细检查返回的response状态码是否为200成功然后取出其中的内容。异常处理try...except和文件关闭finally保证了程序的健壮性。3.4 保存你的劳动成果拿到深度图的二进制数据后我们需要把它保存到硬盘上变成一个真正的图片文件。def save_depth_image(depth_data, original_filename): 将API返回的深度图数据保存为文件。 参数: depth_data (bytes): 深度图的二进制数据 original_filename (str): 原始图片的文件名用于生成新文件名 if depth_data is None: print(没有深度图数据可供保存。) return # 基于原始文件名生成深度图的新文件名 # 例如my_photo.jpg - my_photo_depth.png name_part, _ os.path.splitext(original_filename) output_filename f{name_part}_depth.png try: # 以二进制写入模式创建新文件并将数据写入 with open(output_filename, wb) as f: f.write(depth_data) print(f恭喜深度图已成功保存为: {output_filename}) print(f文件大小: {len(depth_data)} 字节) except Exception as e: print(f保存深度图文件时出错: {e})这个函数负责“落地”成果。它从原始文件名如cat.jpg衍生出一个新文件名cat_depth.png然后用‘wb’模式write binary二进制写入创建一个新文件把API返回的二进制数据直接写进去。通常深度图会保存为PNG格式因为它能很好地保存灰度信息。3.5 把所有功能组合起来主函数最后我们写一个主函数来串联整个流程并添加脚本的入口。def main(): 主函数协调整个深度图生成流程。 # 1. 替换成你自己的API地址 api_endpoint API_URL # 确保这个地址是正确的 # 2. 指定你想要生成深度图的本地图片路径 # 例如./test_image.jpg 表示当前目录下的test_image.jpg your_image_path ./your_image_here.jpg # 请修改为你图片的实际路径 print(*50) print(Python AI深度图生成器启动) print(*50) # 步骤一准备图片 image_file, filename prepare_image(your_image_path) if image_file is None: return # 如果图片没准备好就退出程序 # 步骤二调用API生成深度图 depth_image_data generate_depth_map(api_endpoint, image_file, filename) # 步骤三保存深度图 save_depth_image(depth_image_data, filename) print(*50) print(程序执行完毕) print(*50) # 这是Python脚本的入口当直接运行这个文件时会从这里开始执行 if __name__ __main__: main()主函数main()清晰地展示了我们项目的三个主要步骤。你需要重点关注并修改两个变量api_endpoint和your_image_path把它们换成真实的值。脚本的最后两行是一个Python的常见写法它保证了当你直接运行这个.py文件时main()函数会被自动调用。4. 运行脚本并查看结果脚本写完了让我们来实际运行它。修改脚本中的关键变量打开create_depth_map.py找到API_URL和your_image_path这两个变量将它们分别替换成你真实的API地址和图片路径。图片路径可以是绝对路径如C:/Users/Name/Pictures/my_pic.jpg或相对路径如./pic.jpg表示图片和脚本在同一个文件夹。运行脚本打开命令行使用cd命令切换到你的脚本所在的目录。输入命令并回车python create_depth_map.py或python3 create_depth_map.py观察输出如果一切顺利你会在命令行中看到类似以下的提示 Python AI深度图生成器启动 成功加载图片: my_pic.jpg 正在调用AI API生成深度图请稍候... API调用成功深度图数据已接收。 恭喜深度图已成功保存为: my_pic_depth.png 文件大小: 204857 字节 程序执行完毕 查看成果到你的脚本所在目录下找到新生成的my_pic_depth.png文件用图片查看器打开它。你就能看到AI为你分析出的图片深度信息了5. 试试不同的图片并理解可能的情况第一次成功之后你可以多尝试几张不同的图片看看效果。这里有一些小建议风景照有明确前景树木、岩石和背景远山、天空的风景照生成的深度图层次感通常会非常明显。人像人脸和身体作为前景与背景分离深度图能很好地勾勒出人物轮廓。室内场景房间内的物体有前后关系深度图能揭示出这种空间布局。注意对于非常抽象的图片、纯文字的图片或者极度复杂的场景深度估计模型也可能产生不太准确或模糊的结果这是正常现象。多试试感受一下AI的“视觉”能力边界在哪里。如果在运行中遇到了错误别慌。回头仔细检查一下API地址是否正确且可访问图片路径对不对网络连接是否正常命令行输出的错误信息通常会给你很明确的线索。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…