以下是一篇关于《OpenCV 图像处理基础》的技术文章,包含核心概念和代码实例:
OpenCV 图像处理基础
安装与基本操作
OpenCV 可通过 pip 安装:
pip install opencv-python
读取并显示图像:
import cv2
# 读取图像(BGR格式)
image = cv2.imread("image.jpg")
# 显示图像
cv2.imshow("Original Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
色彩空间转换
将图像从 BGR 转换为灰度或 HSV:
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 显示结果
cv2.imshow("Grayscale", gray)
cv2.imshow("HSV", hsv)
cv2.waitKey(0)
图像滤波
高斯模糊和中值滤波:
blurred = cv2.GaussianBlur(image, (5, 5), 0) # 高斯核大小5x5
median = cv2.medianBlur(image, 5) # 中值滤波核大小5
边缘检测
Canny 边缘检测:
edges = cv2.Canny(image, 100, 200) # 阈值1=100, 阈值2=200
cv2.imshow("Edges", edges)
cv2.waitKey(0)
图像二值化
全局阈值与自适应阈值:
_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
adaptive = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
轮廓检测
查找并绘制轮廓:
contours, _ = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image, contours, -1, (0, 255, 0), 2) # 绿色轮廓,线宽2
cv2.imshow("Contours", image)
cv2.waitKey(0)
几何变换
图像旋转和缩放:
(h, w) = image.shape[:2]
M = cv2.getRotationMatrix2D((w//2, h//2), 45, 1.0) # 中心旋转45度
rotated = cv2.warpAffine(image, M, (w, h))
resized = cv2.resize(image, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA) # 缩小50%
直方图均衡化
增强对比度:
equalized = cv2.equalizeHist(gray)
cv2.imshow("Equalized", equalized)
cv2.waitKey(0)
特征检测
SIFT 关键点检测:
sift = cv2.SIFT_create()
keypoints = sift.detect(gray, None)
image_with_keypoints = cv2.drawKeypoints(image, keypoints, None)
cv2.imshow("SIFT Keypoints", image_with_keypoints)
cv2.waitKey(0)
模板匹配
在图像中查找模板位置:
template = cv2.imread("template.jpg", 0)
result = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
通过上述代码示例,涵盖了 OpenCV 的核心功能,包括基础操作、滤波、边缘检测、几何变换等,适合快速入门图像处理。