Написание нескольких изображений с OpenCv2 в Python - PullRequest
0 голосов
/ 19 марта 2020

Я получил набор данных, полный изображений. Моя цель - преобразовать эти изображения в оттенки серого. Я могу легко сделать это с одним изображением, но мне нужно сделать несколько изображений. Вот мой код:

import cv2
import glob

path = "/path/*.jpg"

for file in glob.glob(path):
    img = cv2.imread(file)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Gray image', gray)
    cv2.imwrite('/path/cat' + '_gray.jpg', gray)

Когда я запускаю этот скрипт, он конвертирует только одно изображение, но моя цель - конвертировать все изображения в пути. Я действительно новичок в области обработки изображений и модуля OpenCv2. Спасибо уже сейчас за вашу помощь.

1 Ответ

2 голосов
/ 19 марта 2020

'/path/cat' + '_gray.jpg' всегда дает вам /path/cat_gray.jpg, независимо от имени входного файла.

Возможно, вы захотите использовать некоторую часть исходного имени файла, которую вы можете найти с помощью функций в os.path модуль.

Например:

import cv2
import glob
import os.path

path = "/path/*.jpg"

for file in glob.glob(path):
    img = cv2.imread(file)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imshow('Gray image', gray)
    basename = os.path.basename(file)  # e.g. MyPhoto.jpg
    name = os.path.splitext(basename)[0]  # e.g. MyPhoto
    cv2.imwrite('/path/' + name + '_gray.jpg', gray)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...