OpenCV CLAHE 错误解决:图像类型不匹配
很抱歉,之前给出的代码中有一处错误。CLAHE 函数只能应用于 8 位无符号整数图像(CV_8UC1),或者 16 位无符号整数图像(CV_16UC1)。如果你的图像不符合这些类型,就会出现上述错误。
为了解决这个问题,我们可以将图像转换为 8 位无符号整数图像后再应用 CLAHE。以下是修改后的代码:
import cv2
import numpy as np
from skimage import exposure
def denoise_image(image):
# 使用高斯模糊进行去噪
denoised_image = cv2.GaussianBlur(image, (5, 5), 0)
return denoised_image
def enhance_image(image):
# 进行直方图均衡化
equalized_image = exposure.equalize_hist(image)
# 将图像转换为8位无符号整数
enhanced_image = np.uint8(equalized_image)
# 使用CLAHE进行光线补偿
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
enhanced_image = clahe.apply(enhanced_image)
return enhanced_image
# 替换为你的图片路径
image_path = 'your_image.jpg'
# 读取图像
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
# 去噪
denoised_image = denoise_image(image)
# 质量增强
enhanced_image = enhance_image(denoised_image)
# 显示原始图像、去噪后的图像和增强后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Denoised Image', denoised_image)
cv2.imshow('Enhanced Image', enhanced_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
请将代码中的 'your_image.jpg' 替换为你要处理的照片的路径。这段代码将会读取照片并进行去噪和质量增强操作。最后,它会显示原始图像、去噪后的图像和增强后的图像。
这次代码中,我们在应用 CLAHE 之前,先将图像转换为 8 位无符号整数类型。这样就可以避免之前出现的错误。
原文地址: https://www.cveoy.top/t/topic/0p4 著作权归作者所有。请勿转载和采集!