numpy 是否在OpenCV中使用np.full将阵列Map到映像?

hm2xizp9  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(122)

我是OpenCV的新手,我只是想知道我是否可以用NumPy数组来制作图像。首先,我只使用np.zeros->制作了一个简单的黑色图像

import numpy as np
img = np.zeros([512,512,3])

cv.imwrite('color_img.jpg', img)
cv.imshow("image", img)
cv.waitKey(0)

这将显示一幅黑色图像。所以我想使用np.full()用一些不同的值来尝试这一点
代码->

import numpy as np
img = np.full([512, 512, 3], 0)

cv.imwrite('color_img.jpg', img)
cv.imshow("image", img)
cv.waitKey(0)

我首先尝试使用非零值的np.full(),但它不起作用,然后我尝试同样的0,但它仍然不起作用。
这显示了一个立即消失的窗口,为什么?这两个都是相同的数组,为什么一个显示而另一个不显示?我查看了np.zeros()np.full()的文档,如果它们都返回相同的东西,那么这里的错误是什么。任何解释都会有帮助。
我正在尝试将一个模糊的数组显示为图像。我原以为np.zeros()np.full()工作相同,但他们没有。

3ks5zfa0

3ks5zfa01#

问题出在两个数组的数据类型中。(正如评论中指出的那样。)
Np.zeros()的dtypeflat64,np.ull()的dtypeint32。因此,最好在执行此类操作时指定dtype。
Eg->(使用np.full()的零数组)

import numpy as np
img = np.full([512,512,3], 0, dtype=np.float64)
cv.imshow("image", img)
cv.waitKey(0)

相关问题