很抱歉,之前给出的代码中有一处错误。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 位无符号整数类型。这样就可以避免之前出现的错误。

OpenCV CLAHE 错误解决:图像类型不匹配

原文地址: https://www.cveoy.top/t/topic/0p4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录