1. 安装OpenCV
Python用户使用以下命令安装:
pip install opencv-python # 基础模块
pip install opencv-contrib-python # 包含额外模块(如SIFT)
2. 图像基础操作
读取/显示/保存图像
import cv2# 读取图像(第二个参数:cv2.IMREAD_COLOR / GRAYSCALE / UNCHANGED)
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)# 显示图像
cv2.imshow('Window Title', img)
cv2.waitKey(0) # 等待按键(0表示无限等待)
cv2.destroyAllWindows()# 保存图像
cv2.imwrite('output.jpg', img)
转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
调整尺寸和裁剪
resized = cv2.resize(img, (new_width, new_height))
cropped = img[y1:y2, x1:x2] # 高度范围在前,宽度在后
3. 视频处理
从摄像头捕获视频
cap = cv2.VideoCapture(0) # 0表示默认摄像头while True:ret, frame = cap.read()if not ret:break# 在此处理帧(例如转换为灰度)gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('Camera', gray_frame)if cv2.waitKey(1) & 0xFF == ord('q'): # 按q退出breakcap.release()
cv2.destroyAllWindows()
处理视频文件
cap = cv2.VideoCapture('video.mp4')
while cap.isOpened():ret, frame = cap.read()# ...(同上)
4. 物体检测(以人脸检测为例)
# 加载预训练的Haar级联分类器
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')# 检测人脸
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)# 绘制矩形框
for (x, y, w, h) in faces:cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)cv2.imshow('Faces', img)
cv2.waitKey(0)
5. 图像处理进阶
边缘检测(Canny)
edges = cv2.Canny(img, threshold1=100, threshold2=200)
轮廓检测
contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 2)
图像变换(旋转/平移)
rows, cols = img.shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1) # 旋转45度
rotated = cv2.warpAffine(img, M, (cols, rows))
6. 学习资源
-
官方文档: https://docs.opencv.org
-
GitHub示例: OpenCV官方仓库的
samples
文件夹 -
实用工具:
-
cv2.VideoWriter()
保存视频 -
cv2.filter2D()
图像滤波 -
cv2.HoughLinesP()
霍夫变换检测直线
-