目录
学习目标:
一、核心知识点
二、实用工具推荐
三、学习内容与步骤
1.环境搭建
2.图像获取与显示
3 图像基础处理
4 图像几何变换
5 图像像素操作
四、实战任务建议
实战 1:图像加载 + 显示 + 保存
实战 2:灰度图 + 边缘检测 + 图像叠加
实战 3:人脸检测(OpenCV自带Haar模型)
实战 4:摄像头实时图像 + 边缘检测
五、推荐学习资源
教程/文档:
视频教程:
六、阶段一小项目
计算机视觉阶段一:CV入门基础,这是构建图像理解能力的第一步。
学习目标:
掌握图像的基本概念,熟练使用 OpenCV 进行图像读取、处理和简单分析。
一、核心知识点
模块 | 内容 | 备注 |
图像基础概念 | 像素、RGB、灰度图、通道、分辨率 | 图像是一个多维数组 |
颜色空间转换 | RGB ↔ BGR ↔ HSV | cv2.cvtColor() |
图像读取与显示 | cv2.imread()、cv2.imshow() | 加载图像/视频 |
图像缩放与裁剪 | resize()、数组切片 | 改变图像尺寸/区域 |
图像滤波与去噪 | 均值、Gaussian、Median | 降噪处理 |
边缘检测 | Sobel、Laplacian、Canny | 识别图像中边缘轮廓 |
图像几何变换 | 平移、旋转、仿射变换、透视变换 | cv2.warpAffine() |
绘图与标注 | 画线、圆、文字标注 | cv2.line()、cv2.putText() |
二、实用工具推荐
工具名 | 用途 | 安装命令 |
Python | 编程语言 | 建议用Python 3.8+ |
OpenCV | 图像处理主力库 | pip install opencv-python |
JupyterLab | 交互式开发环境(推荐) | pip install jupyterlab |
三、学习内容与步骤
1.环境搭建
-
编程语言选择:
-
Python:主流语言,语法简单,生态丰富(推荐初学者使用)。
-
C++:工业级应用常用,性能更高(适合进阶后学习)。
-
-
安装OpenCV:
pip install opencv-python # 完整版(含额外模块,如SIFT算法): pip install opencv-contrib-python
-
Python安装命令:
-
C++版本需从源码编译(参考OpenCV官方文档)。
-
-
开发工具:
-
Jupyter Notebook:适合快速实验和调试。
-
PyCharm/VS Code:适合大型项目开发。
-
2.图像获取与显示
-
图像读取与保存:
import cv2
# 读取图像
img = cv2.imread('image.jpg') # BGR格式
# 显示图像
cv2.imshow('Image', img)
cv2.waitKey(0) # 等待按键关闭窗口
cv2.destroyAllWindows()
# 保存图像
cv2.imwrite('output.jpg', img)
-
图像格式与通道:
-
OpenCV默认读取为BGR格式,需转换为RGB(如用于显示)。
-
像素值范围:0-255(8位无符号整数)。
-
3 图像基础处理
-
颜色空间转换:
# 灰度化
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# RGB转灰度公式:Y = 0.299R + 0.587G + 0.114B
-
图像二值化:
# 阈值分割(将灰度图转为黑白二值图)
_, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
-
直方图均衡化:
# 增强图像对比度
equalized_img = cv2.equalizeHist(gray_img)
-
滤波去噪:
# 高斯滤波(平滑噪声)
blurred_img = cv2.GaussianBlur(img, (5,5), 0)
# 中值滤波(去除椒盐噪声)
median_img = cv2.medianBlur(img, 5)
4 图像几何变换
-
缩放:
resized_img = cv2.resize(img, (width, height), interpolation=cv2.INTER_LINEAR)
-
旋转:
# 获取旋转矩阵(绕中心点旋转45度,缩放0.5)
M = cv2.getRotationMatrix2D((center_x, center_y), 45, 0.5)
rotated_img = cv2.warpAffine(img, M, (width, height))
-
透视变换:
# 定义源点和目标点
pts1 = np.float32([[x1,y1], [x2,y2], [x3,y3], [x4,y4]])
pts2 = np.float32([[0,0], [width,0], [0,height], [width,height]])
M = cv2.getPerspectiveTransform(pts1, pts2)
warped_img = cv2.warpPerspective(img, M, (width, height))
5 图像像素操作
-
访问与修改像素值:
# 访问单个像素
pixel = img[100, 100] # BGR值
# 修改像素
img[100, 100] = [255, 0, 0] # 设置为蓝色
-
图像ROI(Region of Interest)提取:
roi = img[y_start:y_end, x_start:x_end]
四、实战任务建议
实战 1:图像加载 + 显示 + 保存
import cv2img = cv2.imread('example.jpg')
cv2.imshow('Image', img)
cv2.imwrite('saved.jpg', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
实战 2:灰度图 + 边缘检测 + 图像叠加
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
cv2.imshow('Edges', edges)
实战 3:人脸检测(OpenCV自带Haar模型)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow('Faces', img)
实战 4:摄像头实时图像 + 边缘检测
cap = cv2.VideoCapture(0)
while True:ret, frame = cap.read()edges = cv2.Canny(frame, 100, 200)cv2.imshow('Edges Live', edges)if cv2.waitKey(1) == 27: # ESC退出break
cap.release()
cv2.destroyAllWindows()
五、推荐学习资源
教程/文档:
-
OpenCV 官方文档(英文)
-
OpenCV-Python 中文教程
视频教程:
-
B站推荐关键词:
OpenCV Python 零基础入门
-
YouTube 推荐频道:
Murtaza's Workshop - Robotics and AI
六、阶段一小项目
项目名称 | 描述 | 提示 |
图像变换工具 | 图像输入 → 滤波 → 边缘检测 → 变换 | 用 OpenCV 实现 GUI 可加分 |
实时摄像头特效 | 实时处理图像并添加滤镜/变形效果 | 摄像头输入、滤镜算法、键盘控制 |
人脸截取工具 | 从照片中自动检测人脸并保存为头像图像 | 使用 Haar+裁剪 |
扩展阅读:
AI 技术&AI开发框架 | AI 技术&AI开发框架 |
深度解析 AI 应用开发流程 | 深度解析 AI 应用开发流程 |
深度解析 AI 开发的全栈生态 | 深度解析 AI 开发的全栈生态 |
从0到1:AI 全栈项目实战模板 | 从0到1:AI 全栈项目实战模板 |
计算机视觉(Computer Vision, CV) | 计算机视觉(Computer Vision, CV) |
计算机视觉阶段一:CV入门基础 | 计算机视觉阶段一:CV入门基础 |
计算机视觉阶段二:经典算法与理论基础(传统CV) | 计算机视觉阶段二:经典算法与理论基础(传统CV) |
计算机视觉阶段三&四:深度学习 + CV 模型训练及部署实战 | 计算机视觉阶段三&四:深度学习 + CV 模型训练及部署实战 |