OpenCV图像处理实战技巧

图像灰度化

灰度化是将彩色图像转换为灰度图像的过程,通常通过加权平均法或最大值法实现。OpenCV提供了cvtColor函数实现这一转换。

import cv2
img = cv2.imread('image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

加权平均法公式: $Gray = 0.299 \times R + 0.587 \times G + 0.114 \times B$

图像二值化

二值化将灰度图像转换为黑白图像,通过设定阈值将像素分为两类。OpenCV提供多种二值化方法,最常用的是全局阈值法。

_, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)

自适应阈值二值化:

binary_img = cv2.adaptiveThreshold(gray_img, 255, 
                                  cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
                                  cv2.THRESH_BINARY, 11, 2)

仿射变换

仿射变换是线性变换加平移变换,保持图像中直线的平行性。需要定义变换矩阵,通常通过三个点的映射关系确定。

rows, cols = 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)
dst = cv2.warpAffine(img, M, (cols,rows))

旋转加缩放的仿射变换:

M = cv2.getRotationMatrix2D((cols/2,rows/2), 45, 0.5)
dst = cv2.warpAffine(img, M, (cols,rows))

颜色空间转换

除了灰度化,OpenCV支持多种颜色空间转换,如HSV、LAB等。HSV空间对光照变化更鲁棒。

hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lab_img = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)

提取特定颜色范围(HSV示例):

lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
mask = cv2.inRange(hsv_img, lower_blue, upper_blue)

直方图均衡化

提高图像对比度的方法,特别适用于灰度图像。OpenCV提供equalizeHist函数实现。

equ = cv2.equalizeHist(gray_img)

CLAHE(限制对比度自适应直方图均衡化):

clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(gray_img)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值