【发布时间】:2018-12-07 12:52:12
【问题描述】:
我从未指定尺寸的成像设备获取原始灰度帧。 但我知道原始帧是 342x260 像素。 初始处理后,我有一个 uint16 numpy 数组(一维数组)。如何使用 cv2.imshow 显示数组?
cv2.imshow('image', npframe)
cv2.waitKey(0)
cv2.destroyAllWindows()
我得到的只是一个看起来很奇怪的窗口,它延伸了我的屏幕的整个高度:
【问题讨论】:
我从未指定尺寸的成像设备获取原始灰度帧。 但我知道原始帧是 342x260 像素。 初始处理后,我有一个 uint16 numpy 数组(一维数组)。如何使用 cv2.imshow 显示数组?
cv2.imshow('image', npframe)
cv2.waitKey(0)
cv2.destroyAllWindows()
我得到的只是一个看起来很奇怪的窗口,它延伸了我的屏幕的整个高度:
【问题讨论】:
您可以使用npframe.shape 获取图像大小。对于灰度图像,这将返回一个包含两个元素的元组(y, x),例如高度和宽度的(260, 342),或者对于彩色(RGB/BGR)图像,这将返回一个包含三个元素的元组(y, x, c),分别表示高度、宽度和频道数。
您可以通过首先定义窗口名称来设置窗口大小:
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
WINDOW_NORMAL 标志可让您调整图像大小:
cv2.resizeWindow('image', npframe.shape[1], npframe.shape[0])
其中npframe.shape[1] 是x 维度中的图像大小,npframe.shape[0] 是y 维度中的图像大小。
那么你的cv2.imshow('image', npframe) 命令就是图片的大小。
【讨论】:
imshow() 期望命名的图像文件是二维数组。您获得的图像可能是单列像素,即 1 像素宽和 88920 像素高的图像。