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

OpenCV生成50%黑50%白图像失败:窗口全黑但数组正常

问题分析与解决方案

你遇到的问题核心在于图像数据类型不匹配:

问题原因

你创建数组时用了np.uint16类型,而OpenCV对uint16格式的图像,像素值的有效范围是0-65535。你赋值的[255,255,255]在这个范围里只相当于约0.39%的亮度,人眼几乎看不到,所以窗口显示全黑。但你用小数组检查时数值确实是对的——只是显示时被OpenCV按uint16的标准缩放了。

修正后的代码

把数组类型改成np.uint8(OpenCV默认的8位图像格式,像素范围0-255),就能正常显示50%黑50%白的效果了:

import cv2
import numpy as np

# 改用uint8类型
blk = np.zeros((400,400,3), np.uint8)
cv2.imshow("black", blk)
print(blk[300,300])

# 右侧区域设为白色
blk[:,200:] = [255,255,255]
cv2.imshow("black", blk)

cc = np.copy(blk)
cv2.imshow("blackc", cc)

key = cv2.waitKey()
if key == 27:
    cv2.destroyAllWindows()

补充说明

如果确实需要使用uint16类型的图像,要正常显示的话,需要把像素值缩放到0-65535范围,比如把白色改成[65535,65535,65535],这样OpenCV才能正确识别出白色:

blk[:,200:] = [65535,65535,65535]

内容的提问来源于stack exchange,提问作者Mayank Doda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:21:32