跳到主要内容

📷 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()