📌 1. 计算机视觉与图像处理
计算机视觉技术涵盖从图像预处理到目标检测的全流程,是工业视觉系统的核心部分。
📍 知识点扩展
- OpenCV 基础
cv2.imread()
、cv2.imshow()
、cv2.imwrite()
进行基本图像读取、显示、保存cv2.cvtColor()
进行颜色空间转换(RGB ↔ GRAY,RGB ↔ HSV)cv2.resize()
进行图像缩放cv2.flip()
进行图像翻转(水平/垂直)
import cv2# 读取图像(BGR 格式)
image = cv2.imread("sample.jpg")# 转换颜色格式
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 转灰度
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # 转 HSV# 显示图像
cv2.imshow("Original", image)
cv2.imshow("Gray", gray)
cv2.imshow("HSV", hsv)cv2.waitKey(0)
cv2.destroyAllWindows()
- 图像滤波与预处理
- 平滑滤波:
- 均值滤波
cv2.blur()
- 高斯滤波
cv2.GaussianBlur()
- 中值滤波
cv2.medianBlur()
- 双边滤波
cv2.bilateralFilter()
- 均值滤波
- 平滑滤波:
import cv2
import numpy as np# 读取图像
image = cv2.imread("sample.jpg")# 应用不同的滤波方法
blur = cv2.blur(image, (5,5)) # 均值滤波
gaussian = cv2.GaussianBlur(image, (5,5), 0) # 高斯滤波
median = cv2.medianBlur(image, 5) # 中值滤波
bilateral = cv2.bilateralFilter(image, 9, 75, 75) # 双边滤波# 显示结果
cv2.imshow("Original", image)
cv2.imshow("Blur", blur)
cv2.imshow("Gaussian", gaussian)
cv2.imshow("Median", median)
cv2.imshow("Bilateral", bilateral)cv2.waitKey(0)
cv2.destroyAllWindows()
-
边缘检测:
cv2.Sobel()
计算梯度cv2.Canny()
进行边缘检测
-
形态学操作
cv2.erode()
腐蚀cv2.dilate()
膨胀cv2.morphologyEx()
(开运算、闭运算、梯度、顶帽、黑帽)
腐蚀(Erosion):通过结构元素的最小值进行操作,减少图像中的前景区域。
膨胀(Dilation):通过结构元素的最大值进行操作,扩展图像中的前景区域。
开运算(Opening):先腐蚀后膨胀,主要用于去除小的噪点。
闭运算(Closing):先膨胀后腐蚀,主要用于填补图像中的小黑洞。
形态学梯度(Morphological Gradient):膨胀和腐蚀之间的差异,突出显示图像的边缘。
顶帽(Top Hat):原图像和开运算结果之间的差异,提取物体的高光部分。
黑帽(Black Hat):闭运算和原图像之间的差异,提取物体的阴影部分。
import cv2
import numpy as np# 读取二值化图像
image = cv2.imread("binary_sample.jpg", cv2.IMREAD_GRAYSCALE)# 定义结构元素(核)
kernel = np.ones((5,5), np.uint8)# 应用形态学操作
eroded = cv2.erode(image, kernel, iterations=1) # 腐蚀
dilated = cv2.dilate(image, kernel, iterations=1) # 膨胀
opened = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel) # 开运算
closed = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel) # 闭运算# 显示结果
cv2.imshow("Original", image)
cv2.imshow("Eroded", eroded)
cv2.imshow("Dilated", dilated)
cv2.imshow("Opened", opened)
cv2.imshow("Closed", closed)cv2.waitKey(0)
cv2.destroyAllWindows()
-
图像二值化
cv2.threshold()
进行全局阈值化- Otsu 阈值
cv2.threshold(src, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
- 自适应阈值
cv2.adaptiveThreshold()
- 直方图均衡化
cv2.equalizeHist()
- CLAHE(对比度受限的自适应直方图均衡化)
cv2.createCLAHE()
-
轮廓检测
cv2.findContours()
查找轮廓cv2.drawContours()
画出轮廓- 计算轮廓特征:
- 面积
cv2.contourArea()
- 周长
cv2.arcLength()
- 轮廓拟合椭圆
cv2.fitEllipse()
- 旋转矩形
cv2.minAreaRect()
- 凸包
cv2.convexHull()
- 面积
import cv2
import numpy as np# 读取图像
image = cv2.imread("sample.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 进行二值化
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 查找轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 画出轮廓
contour_image = image.copy()
cv2.drawContours(contour_image, contours, -1, (0, 255, 0), 2)# 显示结果
cv2.imshow("Contours", contour_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
-
模板匹配 & 特征匹配
cv2.matchTemplate()
进行模板匹配SIFT
(尺度不变特征变换)、ORB
(快速 ORB 关键点检测)cv2.BFMatcher()
进行特征匹配
-
机器人视觉
- 手眼标定
- Pin-hole Camera Model(针孔相机模型)
- 相机标定
cv2.calibrateCamera()
- 外参估计
cv2.solvePnP()
- 深度相机
- Intel RealSense、Kinect
- 立体匹配算法(SGM,Semi-Global Matching)
cv2.StereoBM()
计算视差图cv2.reprojectImageTo3D()
计算 3D 点云
- 手眼标定
📌 2. 深度学习与模型优化(扩展与优化)
深度学习框架用于计算机视觉任务的目标检测、OCR 识别、时间序列预测等。
📍 知识点扩展
-
深度学习框架
- PyTorch
torchvision.transforms
进行数据增强torch.utils.data.DataLoader
进行数据加载
- PaddlePaddle
paddle.vision.transforms
进行数据增强- 动态图 vs 静态图
- PyTorch
-
目标检测
- YOLO
- Anchor 机制
- FPN(特征金字塔)、PAN(路径聚合网络)
nms()
非极大值抑制
- Mask R-CNN
- RoI Align
- 二阶段目标检测框架
- YOLO
-
OCR 训练
- PaddleOCR
- DBNet(文字检测)
- CRNN(文字识别)
- PaddleLabel 进行数据标注
- PaddleOCR
-
模型优化
- INT8 量化
torch.quantization
- 剪枝(L1/L2 正则化)
- 知识蒸馏(Teacher-Student)
- INT8 量化
📌 3. 3D 点云处理(扩展与优化)
点云数据在机器人视觉、工业检测中应用广泛。
📍 知识点扩展
-
点云采集
- 3D 相机(Intel RealSense、Zivid)
- Open3D 读取
.pcd
数据o3d.io.read_point_cloud()
-
点云处理
- 滤波
- 体素降采样
voxel_down_sample()
- 统计滤波
remove_statistical_outlier()
- 半径滤波
remove_radius_outlier()
- 体素降采样
- 点云配准
- ICP 迭代最近点
o3d.pipelines.registration.registration_icp()
- SVD 对齐方法
- ICP 迭代最近点
- 滤波
-
点云拟合
- RANSAC 平面拟合
segment_plane()
- 最小二乘平面拟合
- RANSAC 平面拟合
-
点云投影
- 3D -> 2D 投影
project_to_plane()
- 3D -> 2D 投影
📌 4. 工业自动化与嵌入式部署(扩展与优化)
📍 知识点扩展
-
PLC 与机器人控制
- S7 协议(
snap7
库) - PLC 发送坐标转换到机器人坐标
- S7 协议(
-
边缘计算
- 低功耗设备(ESP32、ARM Cortex)
- TensorRT 优化 YOLO 推理
📌 5. 计算机基础(扩展与优化)
📍 知识点扩展
-
计算机网络
- TCP/IP vs UDP,HTTP vs WebSocket
- 工业数据传输(Modbus、Protobuf)
-
并行计算
- CUDA 加速 YOLO 计算
torch.cuda()
- Python 多线程
threading
vs 多进程multiprocessing
- CUDA 加速 YOLO 计算
-
数据结构
- 排序算法(快速排序、堆排序)
- 最短路径算法(Dijkstra 在机器人导航中的应用)
-
数据库
- SQL vs NoSQL
- MongoDB 进行工业数据存储
📌 6. 现场部署与调试(扩展与优化)
📍 知识点扩展
-
相机标定
cv2.calibrateCamera()
进行相机标定cv2.undistort()
去畸变
-
系统部署
- Docker 部署
docker-compose.yaml
- Kubernetes 进行集群管理
- Docker 部署
-
调试与优化
loguru
记录日志- Prometheus + Grafana 进行监控
📌 7. 机器人视觉(优化补充)
机器人视觉系统需要结合 2D/3D 图像信息,实现精准控制。
📍 知识点扩展
- 手眼标定
- 机器人相机坐标转换
- 标定流程
cv2.solvePnP()
- 立体匹配
- SGM(Semi-Global Matching)实现视差计算
cv2.StereoBM()
进行视差计算cv2.reprojectImageTo3D()
计算 3D 点云
📌 总结
你需要重点掌握:
✅ 计算机视觉(OpenCV、目标检测、OCR)
✅ 深度学习(PyTorch、PaddlePaddle、ONNX)
✅ 3D 点云处理(Open3D、ICP、投影)
✅ 工业自动化(PLC、S7、边缘计算)
✅ 工程化部署(Docker、FastAPI、多线程优化)
💡 需要更详细的代码示例或实践建议,欢迎交流!🚀