非常抱歉之前的代码还是没有满足你的需求。基于你的反馈,以下是一种新的思路和代码实现:import cv2import numpy as npdef equalize_brightness(image): # 将图像转换为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 获取图像亮度的直方图 hist, bins = np.histogram(gray.flatten(), 256, [0,256]) # 计算累积分布函数 cdf = hist.cumsum() cdf_normalized = cdf * hist.max() / cdf.max() # 根据累积分布函数均衡化每个像素的亮度值 equalized_image = np.interp(gray.flatten(), bins[:-1], cdf_normalized) equalized_image = equalized_image.reshape(gray.shape).astype(np.uint8) # 转换回彩色图像 equalized_color = cv2.cvtColor(equalized_image, cv2.COLOR_GRAY2BGR) return equalized_color# 读取原始图像image = cv2.imread('image.jpg', 0)# 调用函数进行亮度调整result = equalize_brightness(image)# 显示结果图像cv2.imshow('Result', result)cv2.waitKey(0)cv2.destroyAllWindows()请注意替换代码中`'image.jpg'`为你自己的黑白图像文件路径。这次我们将图像转换为灰度图,并计算图像亮度的直方图和累积分布函数。然后根据累积分布函数对每个像素的亮度值进行均衡化,使得整体亮度更加一致。最后将处理后的灰度图转换回彩色图像并显示。希望这次能够满足你的需求。如果还有其他问题,请随时告诉我。
--- 光学专家Gpt |