Как выполнить бинарный порог для набора изображений (в формате .png) и записать их в другую папку с таким же именем файла (и тем же расширением .png)? - PullRequest
0 голосов
/ 03 февраля 2020

У меня 450 меток изображений (для сегментации c) в формате .png. Но чтобы использовать эти изображения, я должен преобразовать их в двоичные изображения. Итак, я написал код, который выполняет эту задачу. Однако в последней папке, в которой сохраняются эти двоичные изображения, имена файлов перемешиваются. Я не могу понять, почему. Ниже мой код.

import matplotlib, cv2
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image, ImageOps
import glob

%matplotlib inline

filename = '/content/gdrive/My Drive/mm/train_labels_binary/'  #folder to save output images
images = glob.glob("/content/gdrive/My Drive/mm/train_labels/*.png")
print(len(images))

image_no = 1

for image in images:
  img = cv2.imread(image)
  gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
  _,threshold_img = cv2.threshold(gray_img, 181, 255, cv2.THRESH_BINARY)
  #threshold_img = cv2.cvtColor(threshold_img, cv2.COLOR_GRAY2RGB)
  cv2.imwrite(filename + str(image_no) + '.png', threshold_img) 
  image_no = image_no + 1

1 Ответ

0 голосов
/ 03 февраля 2020

Если вы хотите сохранить исходные имена файлов, используйте функцию basename:

import os

filename = '/content/gdrive/My Drive/mm/train_labels_binary/'  #folder to save output images
images = glob.glob("/content/gdrive/My Drive/mm/train_labels/*.png")
print(len(images))

image_no = 1

for image in images:
  img = cv2.imread(image)
  gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
  _,threshold_img = cv2.threshold(gray_img, 181, 255, cv2.THRESH_BINARY)
  #threshold_img = cv2.cvtColor(threshold_img, cv2.COLOR_GRAY2RGB)
  image_filename = os.path.basename(image)
  path = os.path.join(filename, image_filename)
  cv2.imwrite(path, threshold_img) 
  image_no = image_no + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...