如何使用 OpenCV 读取 numpy 数组图像?

问题描述 投票:0回答:2

我有一个问题正在努力解决。我有一个

file.npy
,其中包含 很多图像

每个图像都是该矩阵文件内的

numpy array
。所以我想做的是在该矩阵内的每个
cv2
图像上应用一些
numpy array
函数。 但我不能。问题是
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)

但是产生了错误?

我怎样才能做到这一点?

python numpy opencv image-processing
2个回答
0
投票
image = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_BGR2GRAY)
cv2.imshow("OpenCV image",image)
cv2.waitKey()

0
投票
import numpy as np
import cv2

images = np.load("file.npy")

for i, img_array in enumerate(images):

    if len(img_array.shape) == 2:  
        img = img_array
    elif len(img_array.shape) == 3:  
        img = cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR)

    gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
    _, thr_img = cv2.threshold(gray_img, 0, 255, cv2.THRESH_OTSU) 


    cv2.imshow(f"Thresholded Image {i}", thr_img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.