计算机视觉技术涵盖从图像预处理到目标检测的全流程,是工业视觉系统的核心部分。
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()
进行全局阈值化cv2.threshold(src, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cv2.adaptiveThreshold()
cv2.equalizeHist()
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()
进行特征匹配机器人视觉
cv2.calibrateCamera()
cv2.solvePnP()
cv2.StereoBM()
计算视差图cv2.reprojectImageTo3D()
计算 3D 点云深度学习框架用于计算机视觉任务的目标检测、OCR 识别、时间序列预测等。
深度学习框架
torchvision.transforms
进行数据增强torch.utils.data.DataLoader
进行数据加载paddle.vision.transforms
进行数据增强目标检测
nms()
非极大值抑制OCR 训练
模型优化
torch.quantization
点云数据在机器人视觉、工业检测中应用广泛。
点云采集
.pcd
数据 o3d.io.read_point_cloud()
点云处理
voxel_down_sample()
remove_statistical_outlier()
remove_radius_outlier()
o3d.pipelines.registration.registration_icp()
点云拟合
segment_plane()
点云投影
project_to_plane()
PLC 与机器人控制
snap7
库)边缘计算
计算机网络
并行计算
torch.cuda()
threading
vs 多进程 multiprocessing
数据结构
数据库
相机标定
cv2.calibrateCamera()
进行相机标定cv2.undistort()
去畸变系统部署
docker-compose.yaml
调试与优化
loguru
记录日志机器人视觉系统需要结合 2D/3D 图像信息,实现精准控制。
cv2.solvePnP()
cv2.StereoBM()
进行视差计算cv2.reprojectImageTo3D()
计算 3D 点云 总结
你需要重点掌握:
✅ 计算机视觉(OpenCV、目标检测、OCR)
✅ 深度学习(PyTorch、PaddlePaddle、ONNX)
✅ 3D 点云处理(Open3D、ICP、投影)
✅ 工业自动化(PLC、S7、边缘计算)
✅ 工程化部署(Docker、FastAPI、多线程优化)
需要更详细的代码示例或实践建议,欢迎交流!