Python+OpenCV 计算机视觉:从零入门 AI 视觉开发

news2026/4/29 6:15:03
本章学习目标从零掌握 PythonOpenCV 计算机视觉基础从环境搭建到实战项目覆盖图像处理、特征检测、目标识别、视频分析全流程可直接落地 AI 视觉开发项目。一、引言为什么计算机视觉是 AI 核心赛道1.1 背景与意义计算机视觉是让机器看懂世界的核心技术是人工智能最落地、应用最广泛的方向。从手机人脸识别、自动驾驶、工业质检到安防监控、医疗影像分析都离不开计算机视觉。OpenCV 作为全球最流行的开源计算机视觉库支持 Python、C、Java 等多语言拥有 2500 优化算法是入门视觉开发的最佳选择。据行业数据计算机视觉市场规模年均增速超 20%AI 视觉工程师岗位缺口超百万掌握 PythonOpenCV等于拿到 AI 开发的入场券。1.2 本章结构概览plaintext环境搭建 → 基础操作 → 图像处理 → 特征检测 → 目标识别 → 视频分析 → 实战项目 → 常见问题 → 未来趋势二、核心概念解析2.1 基本定义概念一计算机视觉让计算机从图像 / 视频中提取、分析、理解信息实现类似人类视觉的感知能力包括图像分类、目标检测、语义分割、实例分割、姿态估计等。概念二OpenCV开源计算机视觉库由英特尔公司发起支持跨平台、跨语言专注于实时视觉处理是 AI 视觉开发的基础工具。概念三数字图像计算机中的图像由像素组成分为灰度图单通道像素值 0-2550 纯黑、255 纯白彩色图三通道RGB每个通道 0-255组合出 1600 万 颜色二值图只有 0 和 255 两种像素用于轮廓提取、形态学操作2.2 关键术语解释像素图像的最小单位决定图像清晰度通道图像的颜色维度灰度图 1 通道彩色图 3 通道卷积视觉算法核心操作用于特征提取阈值像素分割临界值用于二值化处理轮廓图像中连续的边界曲线用于目标定位特征点图像中具有独特性的点用于匹配、跟踪2.3 技术架构概览plaintext┌─────────────────────────────────────────┐ │ 开发环境层 │ │ Python OpenCV Matplotlib │ ├─────────────────────────────────────────┤ │ 基础操作层 │ │ 读取/显示/保存/图像属性获取 │ ├─────────────────────────────────────────┤ │ 图像处理层 │ │ 灰度转换/滤波/阈值/形态学/边缘检测 │ ├─────────────────────────────────────────┤ │ 视觉算法层 │ │ 特征检测/目标识别/视频分析/人脸检测 │ ├─────────────────────────────────────────┤ │ 实战应用层 │ │ 工业质检、安防监控、图像识别项目 │ └─────────────────────────────────────────┘三、环境搭建零失败配置教程3.1 安装 Python 与依赖库python运行# 1. 安装OpenCV pip install opencv-python # 主库 pip install opencv-contrib-python # 扩展库含特征检测、人脸算法 # 2. 安装辅助库 pip install numpy # 数值计算 pip install matplotlib # 图像显示 pip install pillow # 图像处理3.2 环境测试代码python运行# 导入库 import cv2 import numpy as np # 打印版本验证安装成功 print(OpenCV版本, cv2.__version__) print(NumPy版本, np.__version__) # 结果示例OpenCV版本4.9.0NumPy版本1.26.0四、OpenCV 基础操作核心必学4.1 图像读取、显示、保存python运行import cv2 import numpy as np # ---------------------- 1. 读取图像 ---------------------- # cv2.imread(路径, 读取模式) # 模式cv2.IMREAD_COLOR(彩色图)、cv2.IMREAD_GRAYSCALE(灰度图)、cv2.IMREAD_UNCHANGED(含透明通道) img cv2.imread(test.jpg, cv2.IMREAD_COLOR) # 判断是否读取成功 if img is None: print(图像读取失败请检查路径) else: print(图像读取成功) # ---------------------- 2. 显示图像 ---------------------- # cv2.imshow(窗口名, 图像) cv2.imshow(Original Image, img) # 等待按键输入0表示无限等待 cv2.waitKey(0) # 释放所有窗口 cv2.destroyAllWindows() # ---------------------- 3. 保存图像 ---------------------- # cv2.imwrite(保存路径, 图像) cv2.imwrite(save_image.jpg, img) print(图像保存成功)4.2 获取图像属性python运行import cv2 # 读取图像 img cv2.imread(test.jpg) # 获取图像属性(高度, 宽度, 通道数) height, width, channels img.shape print(f图像高度{height}) print(f图像宽度{width}) print(f通道数{channels}) # 获取像素总数 pixel_count img.size print(f像素总数{pixel_count}) # 获取数据类型 dtype img.dtype print(f数据类型{dtype})4.3 像素操作与修改python运行import cv2 import numpy as np # 读取彩色图像 img cv2.imread(test.jpg) # ---------------------- 1. 获取单个像素 ---------------------- # 格式[y坐标, x坐标, 通道] pixel img[100, 100] print(坐标(100,100)的像素值(BGR), pixel) # 获取单通道像素B通道 b_pixel img[100, 100, 0] print(B通道像素值, b_pixel) # ---------------------- 2. 修改单个像素 ---------------------- # 将(100,100)像素改为红色BGR格式红0,0,255 img[100, 100] [0, 0, 255] # ---------------------- 3. 修改区域像素 ---------------------- # 绘制白色矩形x1:x2, y1:y2 img[50:150, 50:150] [255, 255, 255] # 显示结果 cv2.imshow(Pixel Edit, img) cv2.waitKey(0) cv2.destroyAllWindows()五、图像处理核心技术实战重点5.1 色彩空间转换python运行import cv2 import numpy as np # 读取彩色图像 img cv2.imread(test.jpg) # ---------------------- 1. 彩色转灰度 ---------------------- gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # ---------------------- 2. BGR转HSV颜色识别专用 ---------------------- hsv cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # ---------------------- 3. BGR转RGB ---------------------- rgb cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 显示结果 cv2.imshow(Original, img) cv2.imshow(Gray, gray) cv2.imshow(HSV, hsv) cv2.waitKey(0) cv2.destroyAllWindows()5.2 图像滤波去噪、平滑python运行import cv2 import numpy as np # 读取图像 img cv2.imread(test.jpg) # ---------------------- 1. 均值滤波 ---------------------- # cv2.blur(图像, 卷积核大小) blur cv2.blur(img, (5, 5)) # ---------------------- 2. 高斯滤波去噪效果最好 ---------------------- # cv2.GaussianBlur(图像, 卷积核大小, 标准差) gaussian cv2.GaussianBlur(img, (5, 5), 0) # ---------------------- 3. 中值滤波去除椒盐噪声 ---------------------- # cv2.medianBlur(图像, 卷积核大小) median cv2.medianBlur(img, 5) # ---------------------- 4. 双边滤波保留边缘 ---------------------- # cv2.bilateralFilter(图像, 直径, 颜色标准差, 空间标准差) bilateral cv2.bilateralFilter(img, 9, 75, 75) # 显示结果 cv2.imshow(Original, img) cv2.imshow(Blur, blur) cv2.imshow(Gaussian, gaussian) cv2.imshow(Median, median) cv2.imshow(Bilateral, bilateral) cv2.waitKey(0) cv2.destroyAllWindows()5.3 阈值处理二值化python运行import cv2 import numpy as np # 读取灰度图 img cv2.imread(test.jpg, 0) # ---------------------- 1. 简单阈值 ---------------------- # cv2.threshold(图像, 阈值, 最大值, 类型) ret, thresh1 cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) # 二值化 ret, thresh2 cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV) # 反二值化 ret, thresh3 cv2.threshold(img, 127, 255, cv2.THRESH_TRUNC) # 截断 ret, thresh4 cv2.threshold(img, 127, 255, cv2.THRESH_TOZERO) # 取零 # ---------------------- 2. 自适应阈值处理光照不均 ---------------------- # cv2.adaptiveThreshold(图像, 最大值, 自适应方法, 阈值类型, 块大小, 常数) adaptive cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2) # 显示结果 cv2.imshow(Gray, img) cv2.imshow(Binary, thresh1) cv2.imshow(Adaptive, adaptive) cv2.waitKey(0) cv2.destroyAllWindows()5.4 边缘检测python运行import cv2 import numpy as np # 读取图像 img cv2.imread(test.jpg) # 转灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 高斯滤波去噪 blur cv2.GaussianBlur(gray, (5, 5), 0) # ---------------------- Canny边缘检测最常用 ---------------------- # cv2.Canny(图像, 最小阈值, 最大阈值) edges cv2.Canny(blur, 50, 150) # 显示结果 cv2.imshow(Original, img) cv2.imshow(Edges, edges) cv2.waitKey(0) cv2.destroyAllWindows()5.5 形态学操作膨胀、腐蚀、开闭运算python运行import cv2 import numpy as np # 读取二值图 img cv2.imread(test_binary.jpg, 0) # 定义卷积核 kernel np.ones((5, 5), np.uint8) # ---------------------- 1. 腐蚀 ---------------------- erosion cv2.erode(img, kernel, iterations1) # ---------------------- 2. 膨胀 ---------------------- dilation cv2.dilate(img, kernel, iterations1) # ---------------------- 3. 开运算先腐蚀后膨胀去小噪点 ---------------------- opening cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) # ---------------------- 4. 闭运算先膨胀后腐蚀填小孔 ---------------------- closing cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) # 显示结果 cv2.imshow(Original, img) cv2.imshow(Erosion, erosion) cv2.imshow(Dilation, dilation) cv2.imshow(Opening, opening) cv2.imshow(Closing, closing) cv2.waitKey(0) cv2.destroyAllWindows()六、特征检测与目标定位6.1 轮廓检测python运行import cv2 import numpy as np # 读取图像 img cv2.imread(test.jpg) # 复制原图用于绘制 img_copy img.copy() # 转灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 二值化 ret, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # ---------------------- 查找轮廓 ---------------------- # cv2.findContours(二值图, 检索模式, 逼近方法) contours, hierarchy cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # ---------------------- 绘制轮廓 ---------------------- # cv2.drawContours(图像, 轮廓列表, 索引(-1表示所有), 颜色, 粗细) cv2.drawContours(img_copy, contours, -1, (0, 255, 0), 2) # 打印轮廓数量 print(f检测到{len(contours)}个轮廓) # 显示结果 cv2.imshow(Contours, img_copy) cv2.waitKey(0) cv2.destroyAllWindows()6.2 形状匹配与识别python运行import cv2 import numpy as np def shape_detection(img): # 灰度转换 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 阈值处理 _, thresh cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 查找轮廓 contours, _ cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for cnt in contours: # 计算轮廓面积 area cv2.contourArea(cnt) if area 100: # 过滤小轮廓 continue # 轮廓逼近 peri cv2.arcLength(cnt, True) approx cv2.approxPolyDP(cnt, 0.04 * peri, True) # 获取角点数 corners len(approx) # 获取外接矩形 x, y, w, h cv2.boundingRect(approx) # 判断形状 if corners 3: shape Triangle elif corners 4: # 判断正方形/长方形 aspect_ratio w / float(h) shape Square if 0.95 aspect_ratio 1.05 else Rectangle elif corners 5: shape Pentagon else: shape Circle # 绘制形状与文字 cv2.rectangle(img, (x, y), (x w, y h), (0, 255, 0), 2) cv2.putText(img, shape, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) return img # 读取图像 img cv2.imread(shapes.jpg) # 形状识别 result shape_detection(img) # 显示结果 cv2.imshow(Shape Detection, result) cv2.waitKey(0) cv2.destroyAllWindows()七、视频处理与实时分析7.1 摄像头实时读取python运行import cv2 import numpy as np # 打开摄像头0表示默认摄像头 cap cv2.VideoCapture(0) # 判断摄像头是否打开成功 if not cap.isOpened(): print(摄像头打开失败) exit() while True: # 读取帧 ret, frame cap.read() if not ret: print(读取帧失败) break # 实时处理翻转图像 frame cv2.flip(frame, 1) # 1水平翻转0垂直翻转-1水平垂直翻转 # 显示帧 cv2.imshow(Camera, frame) # 按q退出 if cv2.waitKey(1) 0xFF ord(q): break # 释放资源 cap.release() cv2.destroyAllWindows()7.2 视频保存python运行import cv2 import numpy as np # 打开摄像头 cap cv2.VideoCapture(0) # 定义编码器 fourcc cv2.VideoWriter_fourcc(*XVID) # 创建VideoWriter对象文件名编码器帧率分辨率 out cv2.VideoWriter(output.avi, fourcc, 20.0, (640, 480)) while cap.isOpened(): ret, frame cap.read() if not ret: break # 写入帧 out.write(frame) # 显示 cv2.imshow(frame, frame) if cv2.waitKey(1) 0xFF ord(q): break # 释放资源 cap.release() out.release() cv2.destroyAllWindows()八、实战项目AI 视觉人脸检测8.1 静态图片人脸检测python运行import cv2 import numpy as np # 加载人脸检测器OpenCV自带Haar级联分类器 face_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_frontalface_default.xml) # 读取图像 img cv2.imread(face.jpg) # 转灰度图 gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 检测人脸 # detectMultiScale(灰度图, 缩放系数, 最小邻居数) faces face_cascade.detectMultiScale(gray, 1.1, 4) # 绘制人脸框 for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x w, y h), (255, 0, 0), 2) cv2.putText(img, Face, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) # 打印检测结果 print(f检测到{len(faces)}张人脸) # 显示结果 cv2.imshow(Face Detection, img) cv2.waitKey(0) cv2.destroyAllWindows()8.2 实时摄像头人脸检测python运行import cv2 import numpy as np # 加载人脸检测器 face_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_frontalface_default.xml) # 打开摄像头 cap cv2.VideoCapture(0) while True: ret, frame cap.read() if not ret: break # 转灰度图 gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 检测人脸 faces face_cascade.detectMultiScale(gray, 1.1, 4) # 绘制人脸框 for (x, y, w, h) in faces: cv2.rectangle(frame, (x, y), (x w, y h), (255, 0, 0), 2) cv2.putText(frame, fFace {len(faces)}, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) # 显示 cv2.imshow(Real-time Face Detection, frame) # 退出 if cv2.waitKey(1) 0xFF ord(q): break # 释放资源 cap.release() cv2.destroyAllWindows()九、实战项目AI 视觉颜色识别python运行import cv2 import numpy as np def color_detection(frame): # 转HSV空间 hsv cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 定义颜色范围HSV # 红色 lower_red np.array([0, 120, 70]) upper_red np.array([10, 255, 255]) # 绿色 lower_green np.array([40, 40, 40]) upper_green np.array([70, 255, 255]) # 蓝色 lower_blue np.array([90, 40, 40]) upper_blue np.array([130, 255, 255]) # 生成掩码 mask_red cv2.inRange(hsv, lower_red, upper_red) mask_green cv2.inRange(hsv, lower_green, upper_green) mask_blue cv2.inRange(hsv, lower_blue, upper_blue) # 形态学操作去噪 kernel np.ones((5, 5), np.uint8) mask_red cv2.morphologyEx(mask_red, cv2.MORPH_OPEN, kernel) mask_green cv2.morphologyEx(mask_green, cv2.MORPH_OPEN, kernel) mask_blue cv2.morphologyEx(mask_blue, cv2.MORPH_OPEN, kernel) # 查找轮廓 contours_red, _ cv2.findContours(mask_red, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) contours_green, _ cv2.findContours(mask_green, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) contours_blue, _ cv2.findContours(mask_blue, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 绘制红色 for cnt in contours_red: if cv2.contourArea(cnt) 100: x, y, w, h cv2.boundingRect(cnt) cv2.rectangle(frame, (x, y), (x w, y h), (0, 0, 255), 2) cv2.putText(frame, Red, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) # 绘制绿色 for cnt in contours_green: if cv2.contourArea(cnt) 100: x, y, w, h cv2.boundingRect(cnt) cv2.rectangle(frame, (x, y), (x w, y h), (0, 255, 0), 2) cv2.putText(frame, Green, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) # 绘制蓝色 for cnt in contours_blue: if cv2.contourArea(cnt) 100: x, y, w, h cv2.boundingRect(cnt) cv2.rectangle(frame, (x, y), (x w, y h), (255, 0, 0), 2) cv2.putText(frame, Blue, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) return frame # 打开摄像头 cap cv2.VideoCapture(0) while True: ret, frame cap.read() if not ret: break # 颜色识别 result color_detection(frame) # 显示 cv2.imshow(Color Detection, result) if cv2.waitKey(1) 0xFF ord(q): break cap.release() cv2.destroyAllWindows()十、常见问题解答10.1 技术问题Q1图像读取失败怎么办检查文件路径是否正确建议使用绝对路径确认文件格式为 jpg、png、bmp 等 OpenCV 支持的格式检查文件是否损坏Q2摄像头无法打开确认摄像头权限已开启更换摄像头索引0、1、2关闭其他占用摄像头的程序Q3检测效果差调整阈值、卷积核大小、缩放系数等参数增加滤波去噪步骤优化光照环境避免阴影、反光10.2 优化技巧图像预处理先滤波、再阈值、最后检测提升准确率轮廓过滤通过面积、长宽比过滤无效轮廓实时优化降低图像分辨率提升处理速度多线程将图像读取与处理分离避免卡顿十一、未来发展趋势11.1 技术趋势端侧 AI 视觉手机、嵌入式设备本地运行视觉模型多模态融合视觉 语音 文本实现更智能的交互大模型视觉基于 Transformer 的视觉大模型通用识别能力3D 视觉深度感知、三维重建、虚拟与现实融合11.2 应用趋势工业AI 质检、缺陷检测、无人生产线安防人脸识别、行为分析、异常检测医疗病灶识别、影像分析、辅助诊断生活AR 特效、智能美颜、物品识别11.3 职业发展入门期PythonOpenCV 基础1-2 个月进阶期深度学习视觉YOLO、CNN2-4 个月专业期模型部署、嵌入式视觉4-8 个月专家期视觉算法研发、项目架构1 年以上十二、本章小结12.1 核心要点回顾掌握 OpenCV 环境搭建与基础操作可独立读写图像、视频精通图像处理滤波、阈值、边缘检测、形态学操作学会特征检测轮廓、形状、颜色、人脸实时识别完成两大实战项目人脸检测、颜色识别可直接落地应用12.2 学习建议多敲代码视觉开发是实践型技术动手比看书更重要循序渐进从基础操作到实战项目逐步深入项目驱动用小项目巩固知识如车牌识别、手势控制持续学习关注 YOLO、CNN 等深度学习视觉技术从零入门 PythonOpenCV 计算机视觉这套教程从基础到实战全覆盖代码可直接复制运行小白也能快速上手 AI 视觉开发关注我后续更新YOLO 目标检测、CNN 图像分类、嵌入式视觉部署等硬核教程带你从零基础变身 AI 视觉工程师解锁高薪技术赛道

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2564754.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…