OpenCV 快速入门:图像读取、绘制、几何变换

📂 所属阶段:第一阶段 — 图像处理基石(传统 CV 篇)
🔗 相关章节:CV 概览与数字图像基础 · 图像增强与滤波


1. OpenCV 安装与基础

pip install opencv-python opencv-contrib-python

2. 图像读取与显示

import cv2
import numpy as np

# 读取图像
img = cv2.imread("photo.jpg")

# 显示图像
cv2.imshow("Image", img)
cv2.waitKey(0)  # 等待按键
cv2.destroyAllWindows()

# 保存图像
cv2.imwrite("output.jpg", img)

# 获取图像信息
print(f"形状: {img.shape}")  # (高, 宽, 通道数)
print(f"数据类型: {img.dtype}")  # uint8

3. 绘制基本图形

import cv2
import numpy as np

# 创建空白图像
img = np.zeros((400, 600, 3), dtype=np.uint8)

# 绘制直线
cv2.line(img, (50, 50), (550, 50), (0, 255, 0), 2)

# 绘制矩形
cv2.rectangle(img, (100, 100), (300, 200), (255, 0, 0), 2)

# 绘制圆形
cv2.circle(img, (450, 150), 50, (0, 0, 255), -1)  # -1 表示填充

# 绘制文字
cv2.putText(img, "Hello OpenCV", (50, 350), 
            cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)

cv2.imshow("Shapes", img)
cv2.waitKey(0)

4. 几何变换

4.1 缩放

import cv2

img = cv2.imread("photo.jpg")

# 方法一:指定输出大小
resized = cv2.resize(img, (300, 200))

# 方法二:指定缩放比例
resized = cv2.resize(img, None, fx=0.5, fy=0.5)

cv2.imshow("Resized", resized)
cv2.waitKey(0)

4.2 旋转

import cv2
import numpy as np

img = cv2.imread("photo.jpg")
h, w = img.shape[:2]

# 获取旋转矩阵(中心、角度、缩放)
center = (w // 2, h // 2)
angle = 45  # 旋转 45 度
scale = 1.0
M = cv2.getRotationMatrix2D(center, angle, scale)

# 应用旋转
rotated = cv2.warpAffine(img, M, (w, h))

cv2.imshow("Rotated", rotated)
cv2.waitKey(0)

4.3 仿射变换

import cv2
import numpy as np

img = cv2.imread("photo.jpg")
h, w = img.shape[:2]

# 定义三个对应点
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[10, 100], [200, 50], [100, 250]])

# 获取仿射变换矩阵
M = cv2.getAffineTransform(pts1, pts2)

# 应用变换
affine = cv2.warpAffine(img, M, (w, h))

cv2.imshow("Affine", affine)
cv2.waitKey(0)

5. 小结

OpenCV 基础操作:

1. 读取/显示/保存:imread、imshow、imwrite
2. 绘制图形:line、rectangle、circle、putText
3. 几何变换:resize、rotate、warpAffine

这些是所有 CV 应用的基础!

💡 记住:OpenCV 使用 BGR 顺序,不是 RGB。如果颜色不对,检查通道顺序。


🔗 扩展阅读