跳到主要内容

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