You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

线性图像校正后图像显示为黑色的原因排查求助

线性校正后图像显示黑色的问题分析与解决

问题现象

原始图像可正常显示,但经过线性校正后的图像显示为全黑。

原始代码

import cv2
import numpy as np
from google.colab import drive
from google.colab.patches import cv2_imshow
# Uploading an image
drive.mount("/content/drive")
img = cv2.imread('./drive/MyDrive/python/bird/maxresdefault.jpg', cv2.IMREAD_GRAYSCALE)
# Calculating the minimum and maximum pixel values
r_min = np.min(img)
r_max = np.max(img)
# Linear image correction
img_corrected = (img - r_min) * 255 / (r_max - r_min)
# Converting an image to an 8-bit format
img_corrected = np.uint8(img_corrected)
img_corrected = cv2.cvtColor(img_corrected, cv2.COLOR_BGR2RGB)
# Displaying the original and corrected images
cv2_imshow(img)
cv2.imwrite("./drive/MyDrive/python/bird/corrected_image.jpg", img_corrected)
img_corrected = cv2.imread("./drive/MyDrive/python/bird/corrected_image.jpg")
cv2.waitKey(0)
cv2.destroyAllWindows()

图像对比

原始图像:
原始图像

校正后黑色图像:
校正后黑色图像

错误原因

  1. 单通道灰度图误用BGR转RGB转换
    代码读取的是单通道灰度图,但后续调用cv2.cvtColor(img_corrected, cv2.COLOR_BGR2RGB),该转换仅适用于3通道BGR图像。单通道图像执行此操作会生成不符合预期的3通道数据,最终保存后显示为全黑。

  2. 冗余的图像保存读取操作
    校正后的图像可直接显示,无需先保存再读取;且OpenCV默认以BGR格式写入图像,转RGB后保存会导致颜色异常。

  3. 未处理除零异常
    若图像所有像素值相同(r_max == r_min),会触发除法错误。

修正后的代码

import cv2
import numpy as np
from google.colab import drive
from google.colab.patches import cv2_imshow

# 挂载Google Drive并读取灰度图像
drive.mount("/content/drive")
img = cv2.imread('./drive/MyDrive/python/bird/maxresdefault.jpg', cv2.IMREAD_GRAYSCALE)

# 计算像素极值并处理除零情况
r_min = np.min(img)
r_max = np.max(img)
if r_max == r_min:
    img_corrected = img
else:
    # 线性拉伸校正
    img_corrected = (img - r_min) * 255 / (r_max - r_min)
    img_corrected = np.uint8(img_corrected)

# 显示原始图像与校正图像
cv2_imshow(img)
cv2_imshow(img_corrected)

# 保存校正后的灰度图像
cv2.imwrite("./drive/MyDrive/python/bird/corrected_image.jpg", img_corrected)

cv2.waitKey(0)
cv2.destroyAllWindows()

修改说明

  • 移除错误的COLOR_BGR2RGB转换,保留灰度图的单通道格式
  • 添加r_max == r_min的判断,避免除零错误
  • 直接显示校正后的图像,省去不必要的保存后读取步骤
  • 直接保存单通道灰度图像,确保图像正常显示

内容的提问来源于stack exchange,提问作者Mosh Tumuch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:32:39