OpenCV图像处理入门实战指南
本文将通过一系列代码实例,帮你快速掌握OpenCV的核心功能。
一、环境准备
import cv2
import numpy as np
cv2
:OpenCV核心库numpy
:用于处理图像矩阵运算
二、图像基础操作
1. 图像读取与显示
# 读取彩色图像(默认BGR格式)
img = cv2.imread('aigc.png')# 创建窗口并调整大小
cv2.namedWindow('Image Display', cv2.WINDOW_NORMAL)
cv2.resizeWindow('Image Display', 800, 400)# 显示图像
cv2.imshow('Image Display', img)# 等待按键触发(2000ms后自动关闭)
cv2.waitKey(2000)
cv2.destroyAllWindows()
2. 图像属性获取
print("图像尺寸:", img.shape) # (height, width, channels)
print("数据类型:", img.dtype) # uint8(0-255)
print("像素总数:", img.size) # height*width*channels
三、进阶图像处理
1. 灰度转换
gray_img = cv2.imread('aigc.png', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('aigc_gray.jpg', gray_img) # 直接保存灰度图
2. 区域裁剪
# 定义感兴趣区域(ROI)
cropped = img[30:230, 100:300]# 可视化对比
cv2.imshow('Original', img)
cv2.imshow('Cropped', cropped)
cv2.waitKey(0)
3. 视频处理实战
cap = cv2.VideoCapture('video1.mp4')while cap.isOpened():ret, frame = cap.read()if not ret:break# 实时灰度转换gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('Video Player', gray_frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()
四、高级操作技巧
1. 通道操作
b, g, r = cv2.split(img) # 分离通道
merged = cv2.merge([b, g, r]) # 合并通道# 单独显示蓝色通道
cv2.imshow('Blue Channel', b)
cv2.waitKey(0)
2. 图像打码处理
# 在指定区域生成随机噪声
h, w, _ = img.shape
mask = np.random.randint(0, 256, (100, 100, 3), dtype=np.uint8)
img[200:300, 200:300] = maskcv2.imshow('Redacted Image', img)
cv2.waitKey(0)
3. 尺寸调整
resized = cv2.resize(img, None, fx=0.5, fy=0.5) # 等比例缩放
# 或指定具体尺寸:
# resized = cv2.resize(img, (800, 600))
五、完整代码示例
import cv2
import numpy as npdef main():# 图像处理流程img = cv2.imread('aigc.png')# 显示原图cv2.imshow('Original', img)# 转换为灰度图gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)cv2.imshow('Grayscale', gray)# ROI裁剪roi = img[100:300, 200:400]cv2.imshow('ROI', roi)# 图像打码img[50:150, 50:150] = np.random.randint(0, 256, (100, 100, 3))cv2.imshow('Redacted', img)# 尺寸调整resized = cv2.resize(img, (640, 480))cv2.imshow('Resized', resized)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == "__main__":main()
六、关键知识点总结
功能模块 | 核心函数 | 参数说明 |
---|---|---|
图像读取 | cv2.imread() | 第二个参数控制色彩模式 |
图像显示 | cv2.imshow() | 需配合cv2.waitKey() 使用 |
图像保存 | cv2.imwrite() | 支持多种格式(jpg/png等) |
键盘事件 | cv2.waitKey() | 返回按键ASCII码 |
资源释放 | cv2.destroyAllWindows() | 关闭所有窗口 |