新闻详情

新闻详情

首页 / 资讯中心 / 详情

图像镜像处理全解:OpenCV与Pillow翻转操作实战指南

发布时间:2026/10/2 8:38:11来源:尧图网络
图像镜像处理全解:OpenCV与Pillow翻转操作实战指南
在业务开发中我们经常会遇到图片方向不对、视频画面左右颠倒、UI 切图镜像冲突这类需求。尤其是在处理车载影像、安防监控、电商商品图和拍照素材时上下翻转、左右翻转几乎是最常用的预处理操作。网上关于 OpenCV 翻转的资料很多但多数只给一句cv2.flip(img, 1)没有把参数含义、与 Pillow 的差异、批量处理思路和实际项目中的坑讲清楚。本文就用一套完整方案把“上下镜像、左右镜像”这两个操作彻底讲透。内容包括 OpenCV 与 Pillow 两种实现方式、完整可复制的批量处理代码、视频帧实时翻转示例以及常见报错排查和工程规范建议。不管是刚接触图像处理的新手还是在项目中需要快速落地镜像功能的开发者都可以直接照着用。1. 图像镜像处理概念与应用场景1.1 什么是图像镜像图像镜像也叫图像翻转是指将图像沿着某个轴进行对称变换。听起来和旋转有点像但两者有本质区别。旋转是让图像在平面内转动一个角度物体本身的方向会变化但左右手关系不会改变。镜像则是把图像“照镜子”翻转后会产生一个与原始图案对称的结果左右手关系会发生改变。举个直观例子如果你把一张写着“CSDN”的图片左右翻转文字虽然还是“CSDN”的样子但实际上是反的就像镜子里看到的文字。如果上下翻转文字会倒过来阅读顺序颠倒。在数字图像处理中镜像操作通常有三种水平镜像左右翻转沿垂直中轴线翻转左边变右边右边变左边。垂直镜像上下翻转沿水平中轴线翻转上面变下面下面变上面。对角镜像水平 垂直同时翻转图像旋转 180°但实现方式和旋转不同后面会说明。这三种操作对应 OpenCV 中的flip函数参数0、1、-1也对应 Pillow 中的FLIP_LEFT_RIGHT、FLIP_TOP_BOTTOM、TRANSPOSE。初学者最常犯的错就是混淆参数顺序和概念所以第一步先把概念理清。1.2 为什么需要镜像处理镜像处理在真实项目中的出场率非常高常见的应用场景如下。车载影像和行车记录仪画面校正。车辆前挡风玻璃后的摄像头或者倒车影像摄像头安装角度和位置不同拍出来的画面有时会左右反向。为了让用户看到的方向和实际一致就需要对视频帧做水平镜像。这也是本文题目中“驱车疾行”相关场景的常见处理需求——不过这里我们只做画面方向校正不涉及任何极端情况。UI 设计与素材适配。设计师经常给出一套箭头、手势、方向指示图标开发时需要根据界面布局生成镜像版本。比如一个朝右的箭头在某些语言或者布局下需要变成朝左直接镜像即可不需要设计师重新出图。数据增强。在深度学习图像分类、目标检测任务中水平翻转是最常用的数据增强手段之一。它能让模型对物体的左右朝向不敏感从而提升泛化能力。目标检测中翻转后还要同步变换标注框坐标这正是很多新手容易忽略的地方。监控安防与人脸识别。监控画面中摄像头安装位置不同有时需要镜像校正。人脸识别中的活体检测、姿态估计也会通过镜像合成扩充样本。照片与视频编辑。用户上传自拍前置摄像头拍出的照片默认就是镜像效果后置摄像头拍出的照片则是非镜像效果。很多修图 App 会提供“左右翻转”按钮这也属于镜像处理。2. 环境准备与版本说明2.1 开发环境本文示例基于以下环境实际操作时请根据项目情况调整。组件建议版本说明操作系统Windows 10/11、macOS、Linux 均可示例跨平台Python3.8 及以上建议 3.9 或 3.10OpenCV4.x使用cv2.flipPillow9.x 或 10.x使用Image.transposeNumPy1.21 及以上OpenCV 图像本质是 NumPy 数组不同小版本之间 API 基本一致文中的代码在 OpenCV 4.x、Pillow 10.x 下均可运行。如果你的环境版本较旧需要手动调整部分参数。2.2 安装依赖建议新建虚拟环境避免污染系统 Python。# 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # macOS / Linux source venv/bin/activate # 安装依赖 pip install opencv-python pillow numpy安装完成后可以检查版本。import cv2 import numpy import PIL print(OpenCV version:, cv2.__version__) print(NumPy version:, numpy.__version__) print(Pillow version:, PIL.__version__)如果看到版本号正常输出说明环境已经准备完成。2.3 示例图片准备为了演示方便我们使用 OpenCV 自带生成图像的方式创建一张带文字的测试图不需要额外下载素材。读取图片时建议使用英文路径中文路径问题会在后面的常见问题章节专门说明。3. 核心原理拆解flip 函数的三个参数3.1 水平镜像水平镜像也就是左右翻转是使用频率最高的一种操作。OpenCV 对应的参数是0。很多初学者记不住flip的参数含义有一个简单的记忆方法flip函数的参数表示“绕着哪条轴翻转”。0绕着 x 轴水平轴翻转结果是上下颠倒。1绕着 y 轴垂直轴翻转结果是左右颠倒。-1绕着两条轴同时翻转相当于旋转 180°。注意OpenCV 的坐标体系中x 轴向右y 轴向下。所以参数0对应垂直镜像上下翻转参数1对应水平镜像左右翻转。这个概念非常关键很多网上的代码注释都是反的。下面用代码验证。import cv2 # 生成一张带文字的测试图 img cv2.putText( cv2.imread(test.jpg), CSDN, (50, 100), cv2.FONT_HERSHEY_SIMPLEX, 2, (255, 255, 255), 3 )这里为了演示方便先读取一张已有图片test.jpg然后直接对原图做翻转。# 水平镜像左右翻转 flipped_h cv2.flip(img, 1) # 垂直镜像上下翻转 flipped_v cv2.flip(img, 0) # 对角镜像上下左右同时翻转 flipped_both cv2.flip(img, -1)运行结果非常直观flipped_h中原本在左侧的内容会出现在右侧文字变成镜像文字。flipped_v中顶部内容会出现在底部文字倒置。flipped_both相当于把图旋转 180°但图像尺寸和坐标逻辑与旋转不同。3.2 使用 NumPy 实现镜像OpenCV 的图像本质是一个三维 NumPy 数组形状为(height, width, channels)。我们也可以通过数组切片完成镜像操作。import cv2 img cv2.imread(test.jpg) # 水平镜像左右翻转 flipped_h_numpy img[:, ::-1] # 垂直镜像上下翻转 flipped_v_numpy img[::-1, :] # 对角镜像同时翻转 flipped_both_numpy img[::-1, ::-1] cv2.imwrite(flip_h_numpy.jpg, flipped_h_numpy) cv2.imwrite(flip_v_numpy.jpg, flipped_v_numpy) cv2.imwrite(flip_both_numpy.jpg, flipped_both_numpy)这种写法的优点是不依赖 OpenCV 的flip函数只要理解 NumPy 的切片规则就能写出来适合在面试或者源码阅读中体现功底。缺点是代码可读性不如cv2.flip直观而且img[::-1]这种写法在复制和视图之间可能会有性能差异。实际项目中更推荐直接使用cv2.flip。3.3 镜像与旋转的区别镜像和旋转很容易混淆这里用表格说明操作效果左右手关系典型函数旋转 90°图像顺时针或逆时针转动保持不变cv2.rotate旋转 180°图像倒置保持不变cv2.rotate或flip参数 -1水平镜像左右互换改变flip参数 1垂直镜像上下互换改变flip参数 0注意cv2.flip(img, -1)虽然效果和旋转 180° 相同但底层实现路径不同。cv2.rotate专用于旋转适合对图像方向有明确角度要求的场景flip专用于镜像语义更准确。代码中不要混用容易给维护者造成理解负担。4. 基于 Pillow 的镜像实现4.1 Pillow 的 transpose 方法PyTorch 生态、部分 Python Web 框架和图像处理工具中更常使用 Pillow 操作图片。Pillow 的镜像接口是Image.transpose()。from PIL import Image # 打开图片 img Image.open(test.jpg) # 左右翻转 flipped_left_right img.transpose(Image.FLIP_LEFT_RIGHT) # 上下翻转 flipped_top_bottom img.transpose(Image.FLIP_TOP_BOTTOM) # 旋转 90°可选 rotated img.transpose(Image.ROTATE_90)注意 Pillow 的命名和 OpenCV 相反Image.FLIP_LEFT_RIGHT表示左右翻转对应 OpenCV 的flip(img, 1)。Image.FLIP_TOP_BOTTOM表示上下翻转对应 OpenCV 的flip(img, 0)。命名上非常直观不容易记混。4.2 保存结果与格式控制使用 Pillow 保存图片时可以通过save方法指定质量参数。from PIL import Image img Image.open(test.jpg) flipped img.transpose(Image.FLIP_LEFT_RIGHT) # 保存为高质量 JPEG flipped.save(flipped.jpg, quality95) # 保存为 PNG flipped.save(flipped.png)这里有一个值得注意的细节OpenCV 保存图片默认采用 BGR 通道顺序读取时也是 BGR而 Pillow 读取时是 RGB。如果项目里同时使用两个库来回转换时一定要处理通道顺序否则会出现图片颜色偏蓝或偏红的问题。推荐的做法是统一使用一种库做核心处理或者在使用 OpenCV 读取后转成 RGBimport cv2 from PIL import Image # OpenCV 读取 img_bgr cv2.imread(test.jpg) # 转成 RGB img_rgb cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB) # 转成 Pillow Image pillow_img Image.fromarray(img_rgb)5. 完整实战案例批量图片镜像处理工具下面进入实战环节。我们实现一个命令行小工具可以递归读取一个文件夹中的所有图片按指定方向做镜像翻转并输出到另一个目录。这个工具可以直接用于电商图片批量处理、素材整理和数据集预处理。5.1 需求分析与功能拆分需求非常简单输入一个图片文件夹路径。输入一个输出文件夹路径。选择翻转方向horizontal、vertical、both。程序自动处理所有常见格式图片。处理完成后输出统计信息。5.2 项目结构image_flip_tool/ ├── flip_tool.py └── images/ ├── a.jpg └── b.pngflip_tool.py是完整脚本images目录放测试图片。5.3 完整代码实现import os import argparse import cv2 SUPPORTED_EXTENSIONS {.jpg, .jpeg, .png, .bmp, .webp, .tiff} def flip_image(src_path: str, dst_path: str, direction: str horizontal): 对单张图片执行镜像翻转。 direction: horizontal - 左右翻转 vertical - 上下翻转 both - 上下左右同时翻转 img cv2.imread(src_path) if img is None: print(f[WARN] 无法读取图片: {src_path}) return False if direction horizontal: flipped cv2.flip(img, 1) elif direction vertical: flipped cv2.flip(img, 0) elif direction both: flipped cv2.flip(img, -1) else: print(f[ERROR] 不支持的翻转方向: {direction}) return False cv2.imwrite(dst_path, flipped) return True def collect_images(input_dir: str): 递归收集目录下所有支持的图片文件 images [] for root, _, files in os.walk(input_dir): for filename in files: ext os.path.splitext(filename)[1].lower() if ext in SUPPORTED_EXTENSIONS: images.append(os.path.join(root, filename)) return images def main(): parser argparse.ArgumentParser(description批量图片镜像翻转工具) parser.add_argument(--input, requiredTrue, help输入图片目录) parser.add_argument(--output, requiredTrue, help输出图片目录) parser.add_argument( --direction, defaulthorizontal, choices[horizontal, vertical, both], help翻转方向 ) args parser.parse_args() os.makedirs(args.output, exist_okTrue) images collect_images(args.input) if not images: print([INFO] 输入目录中没有找到图片文件) return success_count 0 fail_count 0 for img_path in images: relative_path os.path.relpath(img_path, args.input) # 保持目录结构 dst_path os.path.join(args.output, relative_path) dst_dir os.path.dirname(dst_path) os.makedirs(dst_dir, exist_okTrue) if flip_image(img_path, dst_path, args.direction): success_count 1 else: fail_count 1 print(f[INFO] 处理完成成功: {success_count}失败: {fail_count}) if __name__ __main__: main()5.4 运行与验证在命令行中执行python flip_tool.py --input images --output output --direction horizontal预期输出[INFO] 处理完成成功: 2失败: 0打开output目录图片应该已经完成左右翻转。如果某张图片损坏或路径有问题程序会打印 WARN 信息并跳过不会中断整个任务。这种容错设计在批量处理场景非常重要。5.5 扩展思路这个工具目前只做镜像翻转。实际项目中可以继续扩展增加压缩质量参数控制输出文件大小。增加日志模块把处理记录写入文件。增加多线程处理加速大量图片的翻转。增加复制 EXIF 信息的能力普通图像库保存时可能丢失拍摄参数。扩展时注意保持单一职责图片读取、翻转、保存、日志分别封装成不同函数方便后续替换实现。6. 实战案例视频帧实时镜像校正除图片外视频方向的校正也很常见。车载摄像头、安防摄像头由于安装位置特殊经常需要实时对视频流做左右镜像处理。下面是一个使用 OpenCV 读取视频并实时翻转的完整示例。6.1 读取视频文件并翻转import cv2 def flip_video(input_path: str, output_path: str, flip_code: int 1): # 打开视频 cap cv2.VideoCapture(input_path) if not cap.isOpened(): print(无法打开视频文件) return # 获取视频参数 fps cap.get(cv2.CAP_PROP_FPS) width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 定义视频写入器 fourcc cv2.VideoWriter_fourcc(*mp4v) writer cv2.VideoWriter(output_path, fourcc, fps, (width, height)) frame_count 0 while True: ret, frame cap.read() if not ret: break # 对每一帧做镜像翻转 flipped_frame cv2.flip(frame, flip_code) writer.write(flipped_frame) frame_count 1 cap.release() writer.release() print(f处理完成共处理 {frame_count} 帧) if __name__ __main__: flip_video(input.mp4, output_flip.mp4, flip_code1)6.2 实时摄像头画面翻转如果直接读取摄像头代码会更短import cv2 cap cv2.VideoCapture(0) while True: ret, frame cap.read() if not ret: break # 左右镜像 flipped cv2.flip(frame, 1) cv2.imshow(Original, frame) cv2.imshow(Flipped, flipped) if cv2.waitKey(1) 0xFF ord(q): break cap.release() cv2.destroyAllWindows()运行时按q退出预览窗口。这段代码适合用来验证摄像头安装方向是否需要校正也适合在调试阶段快速查看镜像效果。6.3 视频翻转的注意事项视频翻转比图片翻转多了一个性能问题每帧都做cv2.flip会产生额外的 CPU 开销。对于 1080p 30fps 的视频翻转操作本身通常不慢但再加上读取、写入、编码整体耗时可能明显增加。优化建议如果只是预览不需要保存视频直接在显示层做翻转减少写入开销。如果必须保存优先使用硬件编码器例如VideoWriter的fourcc可以选择h264等格式但要确保当前 OpenCV 版本支持。如果对性能有极致要求可以考虑用 GPU 加速库但会提高环境搭建成本小规模项目不必强求。7. 常见问题与排查思路7.1 常见问题对照表问题现象常见原因解决思路翻转后颜色偏蓝或偏红OpenCV 使用 BGRPillow 使用 RGB通道顺序不一致使用cv2.cvtColor转换通道顺序cv2.imread返回 None图片路径错误、文件损坏、中文路径检查路径、使用英文目录、打印路径调试参数0和1的效果记反混淆了坐标轴含义记住0是上下1是左右翻转后图片内容不对称误把旋转当镜像明确需求镜像会改变左右手关系旋转不会批量处理时中途报错出现损坏图片或权限问题单张异常使用 try-except 捕获跳过继续视频写入失败编码器不支持或文件后缀不匹配更换fourcc编码使用mp4v或avc1图片变绿或无法显示图像数组类型发生变化检查是否为 uint8必要时用astype(np.uint8)转换7.2 中文路径问题OpenCV 的imread和imwrite不支持非 ASCII 路径。Windows 下非常容易出现这种问题代码逻辑没问题但图片文件名带中文就返回 None。最简单的解决方案是使用 Pillow 读取再用 NumPy 转成 OpenCV 格式import cv2 import numpy as np from PIL import Image # 使用 Pillow 读取中文路径图片 pillow_img Image.open(测试图片.jpg) img_rgb np.array(pillow_img) # 转为 BGR img_bgr cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR) # 处理 flipped cv2.flip(img_bgr, 1) # 使用 Pillow 保存避免 OpenCV 中文路径问题 flipped_rgb cv2.cvtColor(flipped, cv2.COLOR_BGR2RGB) Image.fromarray(flipped_rgb).save(翻转_结果.jpg)如果你更倾向统一使用 OpenCV也可以在读取前把文件名用os.path.normpath做规范化但根治方案仍是把项目路径全部改为英文。7.3 翻转后标注框坐标处理如果你在目标检测项目中用翻转做数据增强图片翻转后标注框坐标必须同步变换。水平翻转时新坐标的计算方式为x_new image_width - x - w也就是原来左上角的 x 坐标要变成从右边开始数。y 坐标保持不变。def flip_bbox_horizontal(bbox, image_width): x, y, w, h bbox x_new image_width - x - w return [x_new, y, w, h]垂直翻转时则相反def flip_bbox_vertical(bbox, image_height): x, y, w, h bbox y_new image_height - y - h return [x, y_new, w, h]不处理标注框模型训练时会学到错误的目标位置导致评估指标异常。8. 最佳实践与工程建议8.1 明确需求水平、垂直还是对角很多新手拿到需求就写代码结果做到一半才发现“翻转”和“旋转”都没对齐。建议动手前先确认是左右镜像还是上下镜像是图片处理还是视频帧处理是否涉及保存到原目录如果覆盖原图必须先备份。是否涉及标注数据同步变换最好用一张有明显方向特征的图片做测试比如带文字、箭头或人脸的图片翻转后一眼就能看出方向对不对。8.2 统一图像库避免不必要转换一个项目里尽量只使用一个图像处理库。OpenCV 功能全面适合工业化处理Pillow 更轻量适合 Web 应用和快速脚本。混用两个库时每一次读取和保存都可能引入通道顺序问题排查成本较高。如果不得不混用建议在项目入口定义一个统一的图像读取函数和保存函数内部封装通道转换逻辑业务代码不需要关心底层库差异。8.3 批量处理时使用容错机制批量处理图片时不要因为一张图片失败就中断整个任务。用try-except捕获异常把失败文件记录到日志中最后统一查看。import logging logging.basicConfig(levellogging.INFO) def safe_flip(src, dst, directionhorizontal): try: flipped cv2.flip(cv2.imread(src), 1) cv2.imwrite(dst, flipped) except Exception as exc: logging.error(f处理失败 {src}: {exc})同时在批量处理前打印输入目录中的文件总数帮助判断任务规模。8.4 使用向量化操作避免逐像素循环图像在 NumPy 中操作时永远不要写三层 for 循环去遍历每个像素。cv2.flip本身是高度优化的 C 实现性能远好于 Python 循环。如果要做更复杂的图像变换优先查找 OpenCV 内置函数例如cv2.warpAffine、cv2.rotate、cv2.resize。这些函数底层经过优化且大量测试覆盖比自己手动操作数组更可靠。8.5 保存策略与文件管理保存结果文件时要注意使用cv2.imwrite保存 JPG 时可以通过cv2.IMWRITE_JPEG_QUALITY参数控制质量。cv2.imwrite( output.jpg, flipped_img, [cv2.IMWRITE_JPEG_QUALITY, 95] )保存 PNG 时可选cv2.IMWRITE_PNG_COMPRESSION范围是 0 到 9。数值越大压缩率越高但速度更慢。输出目录应该和输入目录分离避免覆盖原图。批量处理时保留原始目录结构方便后续回溯。8.6 安全与权限提醒在处理摄像头视频或者无人驾驶相关画面时要注意以下几点只处理你有合法授权读取的视频流或者图片数据。不要私自读取或者转发他人摄像头、监控画面。在真实车辆或者安防场景中做实验前确认数据来源合规不涉及隐私信息。涉及图像标注数据修改时先备份原始标注文件避免误操作导致数据集损坏。如果代码被集成到生产环境增加输入校验和异常上报避免脏数据导致程序崩溃。9. 实战技巧与小贴士9.1 用一张测试图验证方向准备一张带文字或者手指方向的图片分别用水平翻转、垂直翻转、对角翻转处理保存后对比查看。不要用纯色图片测试否则看不出效果。9.2 理解 OpenCV 的坐标体系OpenCV 中图像坐标原点在左上角x 轴向右y 轴向下。因此flip(img, 0)是上下翻转本质是沿 x 轴镜像。flip(img, 1)是左右翻转本质是沿 y 轴镜像。不要死记“0 是垂直”要通过坐标轴理解。9.3 图片翻转与数据增强在深度学习项目中水平翻转几乎是最安全的数据增强方式。垂直翻转要谨慎使用因为现实世界中很多物体不会倒着出现比如车辆、行人、路标。如果垂直翻转后样本分布和真实场景差异过大反而会降低模型精度。10. 总结与学习路径本文围绕图像镜像处理这个主题完整讲解了概念、OpenCV 与 Pillow 的核心用法、三个常用参数的区分、批量图片处理工具、视频帧实时翻转、常见问题排查和工程实践建议。通过这篇文章你应该已经掌握水平镜像、垂直镜像、对角镜像的区别。OpenCVflip函数的0、1、-1参数语义。NumPy 切片实现镜像的方法。Pillow 中transpose的对应用法。批量处理图片和视频的工具写法。翻转后目标检测标注框的坐标变换公式。中文路径、颜色通道、编码器等高频问题的解决方案。接下来可以继续学习旋转操作cv2.rotate、仿射变换cv2.warpAffine、目标检测数据增强中的坐标变换以及如何把这些操作组合成一套完整的数据预处理流水线。图像处理入门不难但细节很多。建议你拿自己电脑上的照片和视频实际跑一遍文中的代码对比翻转前后的效果再把批量工具改成适合自己项目的脚本。遇到报错时不要慌对照常见问题表一步步排查大部分问题都能在几分钟内定位。如果本文对你有帮助可以收藏备用也欢迎在动手实践后根据自己踩到的坑继续补充更多经验。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Spring Boot+Vue校园二手交易平台:前后端分离架构与部署实战 2026/10/2 9:21:42

Spring Boot+Vue校园二手交易平台:前后端分离架构与部署实战

每年六月底的毕业季,宿舍楼下都会堆满教材、台灯、自行车和收纳箱,这些九成新的东西最后大多论斤卖给了收废品师傅;到了九月份新生入学,又有人花几十上百元买回同款教材。这两拨人之间的信息鸿沟,就是校园二手交易平台…

阅读更多 →
高空航拍飞机目标检测数据集处理与训练避坑指南 2026/10/2 9:21:41

高空航拍飞机目标检测数据集处理与训练避坑指南

简介:这套高空航拍飞机目标检测数据集专为视觉算法工程师与无人机监控系统开发者设计,旨在解决复杂背景下飞机目标识别与小目标检测难题,采用YOLO格式标注,可直接接入YOLOv5/v7/v8等主流检测框架。包内共2000个文件,包…

阅读更多 →
苍穹外卖day08提交订单全拆解:从表结构到并发扣库存的工程实践 2026/10/2 9:21:34

苍穹外卖day08提交订单全拆解:从表结构到并发扣库存的工程实践

苍穹外卖这个项目,很多人做到第八天才真正开始紧张,因为“提交订单”这一环几乎是整条业务链的枢纽。前面几天的菜品管理、分类管理、购物车、地址簿都是“散装”功能,到了下单这一步,所有东西必须被一次性串起来:查地…

阅读更多 →
前端Leader转AI Agent开发:LangChain+FastAPI实战避坑指南 2026/10/2 9:21:27

前端Leader转AI Agent开发:LangChain+FastAPI实战避坑指南

1. 从一线前端 Leader 到 AI Agent 开发:我为什么在 DAY62 选择死磕 LangChain FastAPI 先交代一下背景。我是一个带过十几人前端团队的一线 Leader,日常工作是排期、Code Review、跟产品扯皮、偶尔救火线上事故。前端这块从 Vue2 到 Vue3、从 Webpack …

阅读更多 →
InfoComm China二十年:专业视听技术演进与高效逛展指南 2026/10/2 9:21:27

InfoComm China二十年:专业视听技术演进与高效逛展指南

每年展会开幕那天,国家会议中心的门口总会排起长队。从拉着行李箱的华南集成商,到背着双肩包的华东渠道,再到穿着西装踩着高跟鞋的甲方信息化负责人,这些人干的事情其实都差不多——在一堆屏幕、音箱、摄像头和中控主机里&#xf…

阅读更多 →
Codex 接入 DeepSeek 实战:协议适配与本地代理配置指南 2026/10/2 9:21:27

Codex 接入 DeepSeek 实战:协议适配与本地代理配置指南

1. 为什么要在 Codex 里接 DeepSeek,而不是继续用默认模型 先把结论摆在前面:Codex 这个命令行工具本身并不绑定任何一家模型服务,它读取的是 ~/.codex/config.toml 里的 provider 配置。默认情况下它走的是官方托管的模型通道,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉