OpenCV 图像处理基础

以下是一篇关于《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 的核心功能,包括基础操作、滤波、边缘检测、几何变换等,适合快速入门图像处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值