📷 OpenCV 入门指南
OpenCV
是一个强大的开源计算机视觉库,支持图像处理、目标检测、人脸识别、视频分析等功能,性能优异,易于扩展。
✅ OpenCV 能解决什么问题?
任务类型 | 示例应用 |
---|---|
图像读取/保存 | 读取照片、保存处理后的图像 |
图像操作 | 缩放、裁剪、滤波、边缘检测 |
形态学处理 | 膨胀、腐蚀、开运算、闭运算 |
视频处理 | 读取视频帧、实时显示、录制 |
特征检测 | 人脸识别、物体检测、轮廓提取 |
颜色空间转换 | RGB、灰度、HSV、二值化处理 |
📦 安装
pip install opencv-python
如需额外扩展支持,可安装 opencv-contrib-python
。
📥 1️⃣ 读取与显示图像
导入 cv2
图 = cv2.读取("input.jpg")
cv2.窗口显示("原图", 图)
cv2.等待按键()
cv2.关闭所有窗口()
🖼️ 2️⃣ 图像基本操作:缩放与裁剪
# 缩放
高, 宽 = 图.shape[:2]
新图 = cv2.缩放(图, (宽//2, 高//2))
# 裁剪
裁剪部分 = 图[50:200, 100:300]
🎨 3️⃣ 转灰度、模糊与边缘检测
灰 = cv2.颜色转换(图, cv2.COLOR_BGR2GRAY)
模糊 = cv2.GaussianBlur(图, (5, 5), 0)
边缘 = cv2.Canny(图, 50, 150)
🧩 4️⃣ 形态学操作:膨胀与腐蚀
结构 = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
膨胀 = cv2.dilate(边缘, 结构, 迭代次数=1)
腐蚀 = cv2.erode(边缘, 结构, 迭代次数=1)
🎥 5️⃣ 视频读取与显示
摄像头 = cv2.VideoCapture(0)
循环:
成功, 帧 = 摄像头.读取()
如果 不 成功: 退出循环
cv2.imshow("摄像头画面", 帧)
如果 cv2.waitKey(1) & 0xFF == ord("q"): 退出循环
摄像头.释放()
cv2.关闭所有窗口()
🏷️ 6️⃣ 目标检测:人脸检测示例
分类器 = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
灰 = cv2.cvtColor(图, cv2.COLOR_BGR2GRAY)
人脸列表 = 分类器.detectMultiScale(灰, 1.1, 4)
对于 (x, y, w, h) 在 人脸列表:
cv2.rectangle(图, (x, y), (x+w, y+h), (0, 255, 0), 2)
✏️ 7️⃣ 图像绘制与文本
cv2.绘制矩形(图, (50, 50), (150, 150), (255, 0, 0), 3)
cv2.putText(图, "Hello", (50, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
📌 常用函数速查
功能 | 方法 |
---|---|
读取/保存图像 | cv2.imread() , cv2.imwrite() |
展示图像 | cv2.imshow() |
颜色空间转换 | cv2.cvtColor() |
模糊滤波 | cv2.GaussianBlur() , cv2.blur() |
边缘检测 | cv2.Canny() |
形态学操作 | cv2.erode() , cv2.dilate() |
视频读取 | cv2.VideoCapture() |
级联分类器检测 | CascadeClassifier |
绘图与文本 | cv2.rectangle() , cv2.putText() |