【问题标题】:How can I read a numpy array image by cv2?如何通过 cv2 读取 numpy 数组图像?
【发布时间】:2022-03-01 14:50:53
【问题描述】:

我有一个我正在尝试解决的问题。我有一个file.npy,其中包含很多图片

每个图像都是该矩阵文件中的numpy array。所以我想做的是在该矩阵内的每个numpy array 图像上应用一些cv2 函数。 但我做不到。问题是 cv2 只接受 文件路径

我可以下载图像,然后在其上应用cv2 函数,但此方法不适用并且会产生不良性能

如何将numpy array 图像输入cv2

这是我的代码的一个简单部分

img=cv2.imread('/content/download.png')

img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#thresholding to remove background
thr = cv2.threshold(img, 0, 255,  cv2.THRESH_OTSU)[1]

这个方法我试过了,但是报错了

arr = np.asarray(bytearray(some_pic_image), dtype=np.uint8)
img = cv2.imdecode(arr, -1) # 'Load it as it is'
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

但产生了错误?

我该怎么做?

【问题讨论】:

  • 这些图片是否带有.npy 扩展名?因为如果它们是你需要的 numpy 加载,它也需要一个路径。你有一个包含很多图像的文件,但是这个文件的扩展名是什么?文件还是文件夹?文件也有路径..
  • 不抱歉,我的意思是文件 file.npy 扩展名不是文件路径。我修改了问题描述
  • 您要发布您遇到的错误吗?这样更容易调试
  • 如果你有一个 npy 文件,这个文件有一个路径,因为它保存在某个地方,你需要 numpy 加载。如果它是脚本中已经生成的数组,那么 opencv 已经可以处理它。您可能必须将数据类型更改为无符号的 8 位整数,因为 opencv 适用于该数据类型。但无论如何它直接在 numpy 数组上工作,所以不需要 imread
  • 请展示一些创建代表.npy文件的代码,以便我们知道我们正在处理什么,例如green = np.full((8,8,3),[0,255,0], dtype=np.uint8)red = np.full((8,8,3),[255,255,255], dtype=np.uint8) 然后 np.save(???)

标签: python numpy image-processing cv2


【解决方案1】:
image = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_BGR2GRAY)
cv2.imshow("OpenCV image",image)
cv2.waitKey()

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 2019-07-17
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2021-11-10
    • 2021-03-24
    相关资源
    最近更新 更多