在OpenCV中加载和保存图像非常有限,因此...从给定文件夹加载所有图像的首选方法是什么?我应该使用.png或.jpg扩展名搜索该文件夹中的文件,存储名称并使用imread每个文件吗?或者,还有更好的方法?
der*_*icw 27
为什么不尝试加载文件夹中的所有文件?如果OpenCV无法打开它,哦.继续下一步. 如果无法打开图像,则cv2.imread()返回None.有点奇怪,它不会引发异常.
import cv2
import os
def load_images_from_folder(folder):
images = []
for filename in os.listdir(folder):
img = cv2.imread(os.path.join(folder,filename))
if img is not None:
images.append(img)
return images
Run Code Online (Sandbox Code Playgroud)
小智 13
我用过skimage.您可以使用标准方式创建集合和访问元素,即col [index].这将为您提供RGB值.
from skimage.io import imread_collection
#your path
col_dir = 'cats/*.jpg'
#creating a collection with the available images
col = imread_collection(col_dir)
Run Code Online (Sandbox Code Playgroud)
小智 9
import glob
cv_img = []
for img in glob.glob("Path/to/dir/*.jpg"):
n= cv2.imread(img)
cv_img.append(n)`
Run Code Online (Sandbox Code Playgroud)
如果所有图像的格式相同:
import cv2
import glob
images = [cv2.imread(file) for file in glob.glob('path/to/files/*.jpg')]
Run Code Online (Sandbox Code Playgroud)
用于读取不同格式的图像:
import cv2
import glob
imdir = 'path/to/files/'
ext = ['png', 'jpg', 'gif'] # Add image formats here
files = []
[files.extend(glob.glob(imdir + '*.' + e)) for e in ext]
images = [cv2.imread(file) for file in files]
Run Code Online (Sandbox Code Playgroud)
您也可以使用matplotlib,试试这个:
import matplotlib.image as mpimg
def load_images(folder):
images = []
for filename in os.listdir(folder):
img = mpimg.imread(os.path.join(folder, filename))
if img is not None:
images.append(img)
return images
Run Code Online (Sandbox Code Playgroud)
小智 6
import os
import cv2
rootdir = "directory path"
for subdir, dirs, files in os.walk(rootdir):
for file in files:
frame = cv2.imread(os.path.join(subdir, file))
Run Code Online (Sandbox Code Playgroud)
您可以使用glob函数来执行此操作。看例子
import cv2
import glob
for img in glob.glob("path/to/folder/*.png"):
cv_img = cv2.imread(img)
Run Code Online (Sandbox Code Playgroud)