在OpenCv(python)中读取文件夹上的多个图像

时间:2015-10-27 13:51:10

标签: python-2.7 opencv image-processing

我想使用opencv(python)在同一个文件夹中读取多个图像。要做到这一点,我需要使用for循环或while循环与imread功能吗?如果是这样,怎么样?请帮帮我......

我希望将图像放入数组中,然后通过循环逐个处理它们。

6 个答案:

答案 0 :(得分:22)

import glob
import cv2

images = [cv2.imread(file) for file in glob.glob("path/to/files/*.png")]

答案 1 :(得分:9)

这将获取onlyfiles中文件夹中的所有文件。然后它将全部读取并将它们存储在数组images中。

from os import listdir
from os.path import isfile, join
import numpy
import cv2

mypath='/path/to/folder'
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
images = numpy.empty(len(onlyfiles), dtype=object)
for n in range(0, len(onlyfiles)):
  images[n] = cv2.imread( join(mypath,onlyfiles[n]) )

答案 2 :(得分:1)

这有更好的时间效率。

def read_img(img_list, img):
    n = cv2.imread(img, 0)
    img_list.append(n)
    return img_list

path = glob.glob("*.bmp") #or jpg
list_ = []`

cv_image = [read_img(list_, img) for img in path]

答案 3 :(得分:0)

import cv2
from pathlib import Path

path=Path(".")

path=path.glob("*.jpg")

images=[]`


for imagepath in path.glob("*.jpg"):

        img=cv2.imread(str(imagepath))
        img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)                         
        img=cv2.resize(img,(200,200))
        images.append(img)
print(images)

答案 4 :(得分:0)

import glob
import cv2 as cv

path = glob.glob("/path/to/folder/*.jpg")
cv_img = []
for img in path:
    n = cv.imread(img)
    cv_img.append(n)

答案 5 :(得分:0)

def flatten_images(文件夹):#文件夹(数据集)的路径

images=[]                             # list contatining  all images

for filename in os.listdir(folder):

    print(filename)

    img=plt.imread(folder+filename)  # reading image (Folder path and image name )

    img=np.array(img)                #

    img=img.flatten()                # Flatten image 

    images.append(img)               # Appending all images in 'images' list 

return(images)