Как сохранить png копии изображений ppm в Python - PullRequest
0 голосов
/ 08 января 2019

У меня есть папка, полная ppm изображений, и я хочу сохранить png их копии.

Как мне это сделать?

Я пытался выполнить следующий код, но ничего не происходит.

import cv2
import numpy as np
import glob
import sys
import os.path

from os.path import isfile,join 
from PIL import Image

target_path = '/Users/lfw/test'
trg = os.listdir(target_path)
count = 0
 for i in trg:
  fullpath = os.path.join(target_path ,i)
  if os.path.isfile(fullpath): 
  im = Image.open(fullpath)
  im.save(str(count) + 'output.png')
  count = count + 1

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Нет никакой необходимости писать Python, вы можете просто использовать ImageMagick в Терминале - как установлено на большинстве дистрибутивов Linux и доступно для macOS и Windows:

magick mogrify -format png *ppm

Если вы хотите, чтобы выходные файлы находились в другой папке, используйте:

mkdir -p newFolder
magick mogrify -format png -path newFolder *ppm

Если вам нужно выполнить много файлов, вы можете сделать их параллельно с GNU Parallel следующим образом:

parallel convert {} {.}.png ::: *ppm

Если вы используете v6 или старше ImageMagick , это становится:

mogrify -format png *ppm
0 голосов
/ 08 января 2019

Допустим, у вас на рабочем столе есть корневая папка с именем test, содержащая my_script.py, и подпапку с именем input, в которой хранятся все ppm-файлы.

Вы можете использовать следующий код для сохранения png-копии каждого ppm-изображения.

my_script.py

import os 
import cv2 
from glob import glob 

cwd = os.getcwd()
input_dir = os.path.join(cwd, "input\\*.ppm")    
ppms = glob(input_dir)   

counter = 1 

for ppm in ppms: 
    cv2.imwrite(str(counter)+".png", cv2.imread(ppm))
    counter += 1 

ПРИМЕЧАНИЕ: Я написал код определенным образом, чтобы вы поддерживали старые файлы ppm и создавали совершенно новые png-копии исходных изображений. Если вы хотите заменить pmpms на pngs, я могу отредактировать ответ, выполнив нужную работу.

...