Как мне сделать этот код для запуска нескольких изображений в одной папке? - PullRequest
0 голосов
/ 18 апреля 2019

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

import cv2

img = cv2.imread('6.jpg')

hieght, width = img.shape[:2]

start_row, start_col = int(hieght*0), int(width*0)
end_row, end_col = int(hieght*1), int(width*.5)

cropped = img[start_row: end_row, start_col:end_col]

cv2.imshow('Original', img)
cv2.waitKey(0)

cv2.imshow('Cropped', cropped)
cv2.waitKey(0)

cv2.destroyAllWindows()

1 Ответ

1 голос
/ 18 апреля 2019

Использование glob:

import cv2

import glob
images = glob.glob("D:\\dirtybit\\Pictures\\*")      # get all the images
# print(images)

for img in images:
    img = cv2.imread(img)

    hieght, width = img.shape[:2]

    start_row, start_col = int(hieght*0), int(width*0)
    end_row, end_col = int(hieght*1), int(width*.5)

    cropped = img[start_row: end_row, start_col:end_col]

    cv2.imshow('Original', img)
    cv2.waitKey(0)

    cv2.imshow('Cropped', cropped)
    cv2.waitKey(0)

    cv2.destroyAllWindows()

Использование os.listdir(path):

import cv2

import os
images = os.listdir("D:\\dirtybit\\Pictures\\*")

for img in images:
    img = os.path.abspath(img)
    img = cv2.imread(img)

    hieght, width = img.shape[:2]

    start_row, start_col = int(hieght*0), int(width*0)
    end_row, end_col = int(hieght*1), int(width*.5)

    cropped = img[start_row: end_row, start_col:end_col]

    cv2.imshow('Original', img)
    cv2.waitKey(0)

    cv2.imshow('Cropped', cropped)
    cv2.waitKey(0)

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