opencv 无法读取路径中的所有文件
open cv can not read all files form a path
我正在处理一个包含 72 张图像和 72 个掩码的数据集。我将图像附加到 numpy ndarray
我希望 cv2 从与 numpy ndarray
.
中文件对应的路径读取文件
这是图像和蒙版的路径:
images_dir = '/content/drive/MyDrive/dataset/images'
masks_dir = '/content/drive/MyDrive/dataset/masks'
#将图像添加到 numpy ndarray
file_names = np.sort(os.listdir(images_dir))
file_names = np.char.split(file_names, '.')
filenames = np.array([])
for i in range(len(file_names)):
filenames = np.append(filenames, file_names[i][0])
这是我想要打开 cv 以读取每张图像然后从相应路径遮罩的功能:
def augment_dataset(count):
'''Function for data augmentation
Input:
count - total no. of images after augmentation = initial no. of images * count
Output:
writes augmented images (input images & segmentation masks) to the working directory
'''
transform_1 = augment(512, 512)
transform_2 = augment(480, 480)
transform_3 = augment(512, 512)
transform_4 = augment(800, 800)
transform_5 = augment(1024, 1024)
transform_6 = augment(800, 800)
transform_7 = augment(1600, 1600)
transform_8 = augment(1920, 1280)
i = 0
for i in range(count):
for file in filenames:
tile = file.split('_')[1]
img = cv2.imread(images_dir+file+'.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
mask = cv2.imread(masks_dir+file+'.png')
mask = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)
当我运行代码:
augment_dataset(8)
出现此错误:
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-112-fae4beb79e15> in <module>()
----> 1 augment_dataset(8)
<ipython-input-111-121d55acd3fc> in augment_dataset(count)
20 tile = file.split('_')[1]
21 img = cv2.imread(images_dir+file+'.jpg')
---> 22 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
23 mask = cv2.imread(masks_dir+file+'.png')
24 mask = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)
error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
我知道这是因为OpenCV没有读取文件。那么如何让 openCV 读取文件呢?
在这些情况下,最好print(path/to/directory)
查看目录是否正确。在这种情况下,我们可以看到我在目录路径中遗漏了一个 /
。所以 Python 无法解析数据。
另外,您可以使用 ose.path.exists(path/to/directory)
查看路径是否存在。如果返回值为False
,则必须检查指定路径是否有错误
我正在处理一个包含 72 张图像和 72 个掩码的数据集。我将图像附加到 numpy ndarray
我希望 cv2 从与 numpy ndarray
.
这是图像和蒙版的路径:
images_dir = '/content/drive/MyDrive/dataset/images'
masks_dir = '/content/drive/MyDrive/dataset/masks'
#将图像添加到 numpy ndarray
file_names = np.sort(os.listdir(images_dir))
file_names = np.char.split(file_names, '.')
filenames = np.array([])
for i in range(len(file_names)):
filenames = np.append(filenames, file_names[i][0])
这是我想要打开 cv 以读取每张图像然后从相应路径遮罩的功能:
def augment_dataset(count):
'''Function for data augmentation
Input:
count - total no. of images after augmentation = initial no. of images * count
Output:
writes augmented images (input images & segmentation masks) to the working directory
'''
transform_1 = augment(512, 512)
transform_2 = augment(480, 480)
transform_3 = augment(512, 512)
transform_4 = augment(800, 800)
transform_5 = augment(1024, 1024)
transform_6 = augment(800, 800)
transform_7 = augment(1600, 1600)
transform_8 = augment(1920, 1280)
i = 0
for i in range(count):
for file in filenames:
tile = file.split('_')[1]
img = cv2.imread(images_dir+file+'.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
mask = cv2.imread(masks_dir+file+'.png')
mask = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)
当我运行代码:
augment_dataset(8)
出现此错误:
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-112-fae4beb79e15> in <module>()
----> 1 augment_dataset(8)
<ipython-input-111-121d55acd3fc> in augment_dataset(count)
20 tile = file.split('_')[1]
21 img = cv2.imread(images_dir+file+'.jpg')
---> 22 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
23 mask = cv2.imread(masks_dir+file+'.png')
24 mask = cv2.cvtColor(mask, cv2.COLOR_BGR2RGB)
error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'
我知道这是因为OpenCV没有读取文件。那么如何让 openCV 读取文件呢?
在这些情况下,最好print(path/to/directory)
查看目录是否正确。在这种情况下,我们可以看到我在目录路径中遗漏了一个 /
。所以 Python 无法解析数据。
另外,您可以使用 ose.path.exists(path/to/directory)
查看路径是否存在。如果返回值为False
,则必须检查指定路径是否有错误