原图即为灰度图像,请更正代码
时间: 2024-12-11 12:24:28 浏览: 5
灰度图转化为彩色图像(MATLAB实现)
既然原图已经是灰度图像,那么我们可以跳过将彩色图像转换为灰度这一步。对于已有的代码,我们只需调整部分逻辑,使其适应灰度图像的对数变换即可。以下是修改后的代码段:
```python
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 保持对路径的引用不变
image_path = "D:\\test\\py\\pictures_data\\experiment 2\\experm02_wheatEar.png"
img_gray = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) # 直接读取灰度图像
# 定义对数变换函数
def log_transform(pixel_value):
r = pixel_value # 在灰度图像中,每个像素值就是r
s = c * np.log(a + r) # 对数变换,这里c和a是你提到的常数
return s
# 应用对数变换
transformed_img = np.vectorize(log_transform)(img_gray)
# 显示原始图像和变换后的图像
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(8, 4))
axs[0].imshow(img_gray, cmap='gray')
axs[0].set_title('Original Gray-Scale Image')
axs[1].imshow(transformed_img, cmap='gray')
axs[1].set_title('Logarithmic Transformation Result')
for ax in axs:
ax.axis('off') # 关掉坐标轴
plt.show()
```
现在代码适用于灰度图像,会对每个像素应用对数变换。
阅读全文