1. OpenCV图像处理入门指南
作为一名计算机视觉工程师,我经常被问到如何快速入门OpenCV。今天我就用最直白的方式,分享10个最实用的OpenCV图像操作技巧,这些都是我多年实战经验的精华总结。
OpenCV是计算机视觉领域的瑞士军刀,它能做的事情远比你想象的要多。从简单的图像处理到复杂的目标检测,OpenCV都能胜任。但千里之行始于足下,我们先从最基础的图像操作开始。
1.1 环境准备与验证
在开始之前,我们需要搭建好开发环境。我强烈推荐使用Python 3.8+和OpenCV 4.x的组合,这是目前最稳定且功能最完善的版本。
安装依赖非常简单:
bash复制pip install opencv-python numpy matplotlib
这三个包各司其职:
opencv-python:OpenCV的核心库numpy:处理图像数据的基础matplotlib:用于图像可视化展示
安装完成后,用以下代码验证是否安装成功:
python复制import cv2
print(f"OpenCV版本:{cv2.__version__}")
如果看到类似"OpenCV版本:4.9.0"的输出,说明环境已经准备就绪。
注意:在实际项目中,我建议使用虚拟环境来管理依赖,避免不同项目间的包版本冲突。
1.2 理解图像的本质
在OpenCV中,图像本质上就是一个NumPy多维数组。这个概念非常重要,理解它就能理解OpenCV中90%的操作。
- 灰度图:形状为(height, width),每个像素值范围0-255
- 彩色图:形状为(height, width, 3),三个通道分别是B(蓝)、G(绿)、R(红)
这里有个关键点需要注意:OpenCV的通道顺序是BGR,而不是常见的RGB。这个细节经常让初学者踩坑。
python复制import cv2
# 读取彩色图像
img = cv2.imread("example.jpg")
print(f"图像形状:{img.shape}") # 输出类似(480, 640, 3)
1.3 坐标系系统
OpenCV的坐标系原点在左上角:
- x轴向右递增
- y轴向下递增
这个坐标系系统与数学中的笛卡尔坐标系不同,在绘制图形或处理位置信息时需要特别注意。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础图像操作
2.1 图像的读取、显示与保存
这三个操作是OpenCV中最基础的"三板斧"。
python复制import cv2
# 读取图像(默认彩色模式)
img = cv2.imread("example.jpg")
# 读取为灰度图
img_gray = cv2.imread("example.jpg", cv2.IMREAD_GRAYSCALE)
# 显示图像
cv2.imshow("原图", img)
cv2.imshow("灰度图", img_gray)
# 等待按键后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存图像
cv2.imwrite("output.jpg", img_gray)
常见读取模式:
| 参数 | 说明 |
|---|---|
| cv2.IMREAD_COLOR | 彩色模式(默认) |
| cv2.IMREAD_GRAYSCALE | 灰度模式 |
| cv2.IMREAD_UNCHANGED | 原始模式(含Alpha通道) |
经验分享:在Jupyter Notebook中使用cv2.imshow()可能会遇到问题,这时可以先用matplotlib来显示图像。
2.2 图像基本属性获取
了解图像的基本属性是进行后续处理的基础。
python复制import cv2
img = cv2.imread("example.jpg")
# 图像形状:(高度, 宽度, 通道数)
print(f"形状:{img.shape}")
# 像素总数
print(f"像素总数:{img.size}")
# 数据类型
print(f"数据类型:{img.dtype}") # 通常是uint8
# 获取和修改单个像素
pixel = img[100, 200] # 获取(100,200)处的像素值
img[100,
