#python #opencv #path #computer-vision #imread
Вопрос:
Я работаю с набором данных из 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])
это функция, которую я хочу, чтобы open 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 amp; 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) lt;ipython-input-112-fae4beb79e15gt; in lt;modulegt;() ----gt; 1 augment_dataset(8) lt;ipython-input-111-121d55acd3fcgt; in augment_dataset(count) 20 tile = file.split('_')[1] 21 img = cv2.imread(images_dir file '.jpg') ---gt; 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 читать файлы?
Комментарии:
1. Можете ли вы распечатать images_dir файл ‘.jpg’ перед imread и проверить, действительно ли существует последняя запись перед сбоем и является ли она изображением?
2. @Micka Я запускаю эту печать(images_dir файл ‘.jpg’), чтобы убедиться, что выходные данные являются изображениями: вот часть результатов: /content/drive/MyDrive/dataset/imagesimage_t1_01.jpg
3. вы пропускаете «/» после…. /изображений
4. Это так неловко, что я не заметил такой простой вещи. 🙂
Ответ №1:
В этих случаях лучше print(path/to/directory)
проверить, является ли каталог правильным или нет. В этом случае мы видим, что я пропустил a /
в пути к каталогу. Таким образом, Python не смог проанализировать данные. кроме того, вы можете использовать ose.path.exists(path/to/directory)
его, чтобы узнать, существует ли путь или нет. если возвращаемое значение равно False
, вы должны проверить указанный путь на наличие ошибок