您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
OpenCV提供了多种图像增强方法,以下是一些常用的实用方法:
调整对比度和亮度: 通过修改像素值来提升图像质量。
import cv2
import numpy as np
def adjust_brightness_contrast(img, alpha=1.0, beta=0):
adjusted = cv2.convertScaleAbs(img, alpha=alpha, beta=beta)
return adjusted
img = cv2.imread('path_to_your_image.jpg')
cv2.imshow('Original Image', img)
enhanced_img = adjust_brightness_contrast(img, alpha=1.5, beta=10)
cv2.imshow('Enhanced Image', enhanced_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
直方图均衡化: 自动调整图像对比度,尤其适用于灰度图像。
def histogram_equalization(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
eq = cv2.equalizeHist(gray)
return eq
eq_img = histogram_equalization(img)
cv2.imshow('Equalized Image', eq_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
自动白平衡: 校正图像中的色偏,使颜色看起来更加自然。
def auto_white_balance(img):
result = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
avg_a = np.average(result[:, :, 1])
avg_b = np.average(result[:, :, 2])
result[:, :, 1] = result[:, :, 1] - ((avg_a - 128) * (result[:, :, 0] / 255.0) * 1.1)
result[:, :, 2] = result[:, :, 2] - ((avg_b - 128) * (result[:, :, 0] / 255.0) * 1.1)
result = cv2.cvtColor(result, cv2.COLOR_LAB2BGR)
return result
white_balanced_img = auto_white_balance(img)
cv2.imshow('White Balanced Image', white_balanced_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
高斯模糊去噪: 减少图像中的噪声,使其看起来更加平滑。
def gaussian_blur(img):
blurred = cv2.GaussianBlur(img, (5, 5), 0)
return blurred
blurred_img = gaussian_blur(img)
cv2.imshow('Blurred Image', blurred_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
自适应阈值: 根据图像的不同区域自动调整阈值,增强图像的细节。
def adaptive_thresholding(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
return thresh
thresh_img = adaptive_thresholding(img)
cv2.imshow('Adaptive Threshold', thresh_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
拉普拉斯锐化: 通过增强边缘达到锐化的效果。
def laplacian_sharpen(img):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
laplacian = cv2.Laplacian(gray, cv2.CV_64F)
sharpened = cv2.convertScaleAbs(gray - laplacian, alpha=1.5, beta=0)
return sharpened
sharpened_img = laplacian_sharpen(img)
cv2.imshow('Sharpened Image', sharpened_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
对数变换: 扩展图像的低灰度值部分,显示出更多细节。
def log_transform(img):
src = img.astype(np.float32)
log_img = np.log(1 + src)
log_img = np.uint8(np.clip(log_img, 0, 255))
return log_img
log_img = log_transform(img)
cv2.imshow('Log Transform', log_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
伽马校正: 通过改变像素值与最终输出之间的非线性关系来调整图像的亮度和对比度。
def gamma_correction(img, gamma=1.2):
look_up_table = np.array([((i / 255.0) ** gamma) * 255 for i in np.arange(0, 256)]).astype("uint8")
gamma_corrected = cv2.LUT(img, look_up_table)
return gamma_corrected
gamma_corrected_img = gamma_correction(img, gamma=1.5)
cv2.imshow('Gamma Corrected Image', gamma_corrected_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
这些方法可以单独使用,也可以根据需要组合使用,以达到特定的图像增强目的。
希望这些信息对你有所帮助!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。