如何使此代码在单个文件夹中运行多个图像?

Posted

技术标签:

【中文标题】如何使此代码在单个文件夹中运行多个图像?【英文标题】:How do i make this code to run multiple images in a single folder? 【发布时间】:2019-09-08 10:22:33 【问题描述】:

有人可以帮助修改下面的代码,以便它可以从给定文件夹中循环运行多个图像吗?该代码仅适用于单个图像。 谢谢。

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()

【问题讨论】:

How can I iterate over files in a given directory?的可能重复 使用glob:docs.python.org/3/library/glob.html 【参考方案1】:

使用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()

【讨论】:

以上是关于如何使此代码在单个文件夹中运行多个图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 django admin 中的单个“选择文件”选择器上传多个图像

如何从iphone中的png文件中检索单个图像

Phonegap:在单个请求中上传多个图像

如何使用 panda_udf 对系列运行多个函数

如何使此图像正确显示?

如何使此 Java 代码正常运行? [多线程,竞争条件]