web-dev-qa-db-ja.com

OpenCvのフォルダーで複数の画像を読み取る(python)

Opencv(python)を使用して、同じフォルダーの複数の画像を読みたい。それを行うには、forループまたはwhile関数を含むimreadループを使用する必要がありますかもしそうなら、どのように?私を助けてください...

画像を配列に入れてから、ループを介して一度に1つずつ処理します。

8
Thamasha
import glob
import cv2

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

これにより、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]) )

これは時間効率が良くなります。

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]

1
Shivaraj
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)
0
Felipe Weber
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)
0
Bharat Kumar