首页 > 解决方案 > 如何在 Python OpenCV 中从指定文件夹/目录中打开随机图像

问题描述

我希望我的程序从文件夹中打开一个随机图像。

这有效:

import cv2
import os
import random

capture = cv2.imread(".Images/IMG_3225.JPEG")

但是,当我想随机执行此操作时,它不起作用:

file = random.choice(os.listdir("./images/"))
capture = cv2.imread(file)

我收到以下错误:

cv2.error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

我究竟做错了什么??

标签: pythonimageopencvrandomcv2

解决方案


发生这种情况是因为os.listdir返回文件夹的内容。

具有此文件夹结构:

images/
    - a.png
    - b.png
    - c.png

这将是预期的结果。

>>> os.listdir('images')
['a.png', 'b.png', 'c.png']

file实际上包含 中的文件名images/,因此cv2.imread找不到该文件,因为它在错误的位置查找它。

您必须将cv2.imread路径传递给文件:

IMAGE_FOLDER = './images'

filename = random.choice(os.listdir(IMAGE_FOLDER))
path = '%s/%s' % (IMAGE_FOLDER , filename)

capture = cv2.imread(path)

推荐阅读