Порог весь набор данных и сохранить пороговые изображения - PullRequest
0 голосов
/ 01 мая 2019

Я хочу портировать весь набор данных изображений с помощью opencv и сохранить пороговые изображения в том же каталоге. Как я могу это сделать? Я пробовал способ (код ниже), но он показывает следующую ошибку: TypeError: img не массив или скаляр. Любая помощь будет высоко ценится

import argparse
import cv2
import numpy as np
import os
from imutils import paths

ap = argparse.ArgumentParser()
ap.add_argument("-d", "--dataset", required=True,
    help= "Path to test dataset")
ap.add_argument("-t", "--threshold", type = int, default = 128,
help = "Threshold value")
args = vars(ap.parse_args())

test_path =os.path.sep.join([args["dataset"]])
TestPath = list(paths.list_images(test_path))
idxs = np.arange(0, len(TestPath))
images = []
path_to_save = "C:/Desktop/Python Training/test"

def main():

for i in idxs:
    image = cv2.imread(test_path[i])
    image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    image = cv2.resize(image, (200, 200))
    image = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY)
    images.append(image)

return (np.array(images))

cv2.imwrite(path_to_save, images)
cv2.waitKey(0)

if __name__ == '__main__':
   main()

1 Ответ

0 голосов
/ 01 мая 2019

Вместо того, чтобы использовать модуль os, я использовал модуль glob и внес небольшие изменения в функцию main ().Ниже приведен код для этого

import argparse
import cv2
import glob

ap = argparse.ArgumentParser()
ap.add_argument("-d", "--dataset", required=True, help= "Path to test dataset")
ap.add_argument("-t", "--threshold", type = int, default = 128, help = 
"Threshold value")
args = vars(ap.parse_args())


path_to_save = "D:/downloads/"

def main():
    i = 0
    for filename in glob.glob(args['dataset']):
        image = cv2.imread(filename)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        image = cv2.resize(image, (200, 200))
        ret, image = cv2.threshold(image, 150, 255, cv2.THRESH_BINARY)
        cv2.imwrite(path_to_save + str(i) + '.jpg', image)
        i += 1


if __name__ == '__main__':
    main()

Если вы знакомы с glob, вы должны знать, как задать аргумент Path to dataset.Если нет, то вот пример того, как вы должны действовать:

-d "D: / downloads /*.*" означает захват всех файлов (путей) в указанной папке

-d 'D: / downloads / *. jpg' означает захват только файлов jpg в папке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...