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
相关产品推荐
相关产品推荐

