Arrays numpy数组集图像维度opencv
我从没有指定尺寸的成像设备获取原始灰度帧。 但我知道原始帧是342x260像素。 初始处理后,我有一个uint16 numpy数组(1d数组)。如何使用cv2.imshow显示阵列Arrays numpy数组集图像维度opencv,arrays,image,numpy,opencv,Arrays,Image,Numpy,Opencv,我从没有指定尺寸的成像设备获取原始灰度帧。 但我知道原始帧是342x260像素。 初始处理后,我有一个uint16 numpy数组(1d数组)。如何使用cv2.imshow显示阵列 cv2.imshow('image', npframe) cv2.waitKey(0) cv2.destroyAllWindows() 我所得到的只是一个看起来很古怪的窗口,它将我的屏幕延伸到了整个高度: 您可以使用npframe.shape获得图像大小。对于灰度图像,这将返回一个包含两个元素的元组(y,x),如高
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\u NORMAL
标志将允许您调整图像大小:
cv2.resizeWindow('image', npframe.shape[1], npframe.shape[0])
其中,npframe.shape[1]
是x
维度中的图像大小,npframe.shape[0]
是y
维度中的图像大小
然后您的
cv2.imshow('image',npframe)
命令将是图像的大小。谢谢,但是数组仅由单个数字组成,因此npframe.shape返回(88920,)。正如我所说,它的原始数据来自usb批量传输,包括元数据在内,是342x260像素,只有320x240图像。我最近将原始数据写入了一个二进制文件,imagemagik能够生成一个带有:convert-depth 16-endian lsb-size 342x260 gray:raw.bin-auto-level raw.png的图像。然后需要获取1D数组并将其映射到2D数组,因为imshow()
希望指定的图像文件是2D数组。您获得的图像可能是一列像素,即1像素宽、88920像素高的图像。谢谢,使用“img=npframe.reforme(260342)”获得它。我现在可以显示图像,窗口也正确。