cv2.imshow()给黑屏

我正在将图像(numpy数组)转换为字符串。然后我将这个字符串转换回原始维度的一个numpy数组。因此,numpy数组都是相等的 - 事实上,numpy.array_equals()也返回True,以使数组相等。cv2.imshow()给黑屏

当我在原始numpy数组上调用cv2.imshow()时,它会打印图像。但是当我在新的numpy数组上调用cv2.imshow()时,我只能看到黑屏。

这是怎么发生的?两个numpy数组是相等的,所以我应该得到相同的输出吗?

import numpy as np 

import cv2

frame = cv2.imread('/home/nirvan/img_two.png' , cv2.IMREAD_GRAYSCALE)

string = ' '.join(map(str,frame.flatten().tolist()))

frameCopy = frame.copy()

x = frame.shape[0]

y = frame.shape[1]

frame = string.strip()

temp = [ int(t) for t in frame.split(' ')]

temp = np.array(temp)

temp = temp.reshape((x,y))

print(np.array_equal(frameCopy , temp))

#gives black screen

cv2.imshow('l' , np.array(temp))

#gives proper image

#cv2.imshow('l' , np.array(frameCopy))

cv2.waitKey()

回答:

你的数组即你的数组是相等的,但数据类型不是。您的temp阵列属于int64类型,而imshow预计为uint8。以下内容将修复您的脚本:

cv2.imshow('l' , np.array(temp, dtype = np.uint8)) 

以上是 cv2.imshow()给黑屏 的全部内容, 来源链接: utcz.com/qa/262892.html

回到顶部