我有一个问题正在努力解决。我有一个
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)
但是产生了错误?
我怎样才能做到这一点?
image = cv2.cvtColor(numpy.asarray(img), cv2.COLOR_BGR2GRAY)
cv2.imshow("OpenCV image",image)
cv2.waitKey()
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()