首页 > 解决方案 > 如何使用 OpenCV 将文件保存在正确编号的目录中

问题描述

如果我有带有数字后跟任意标题的文件夹

1 - Dog
2 - Cat
3 - Frog
...
999 - Penguin

在我的代码中,我有这样的东西(非常精简)

num = 1
for x in range(100):
   cv2.imwrite("C:/path/to/1 - Dog/%d.PNG" % x, image)

   if x % 5 == 0:
      num += 1:

有没有办法将num变量放入cv2.imwrite()(当前为“C:/path/to/1 - Dog/%d.PNG”% x)的输入中,以允许我的脚本自动将文件夹切换num为(每次满足一个条件)?

保存到的文件夹应始终遵循 的值num,其中该值与文件夹名称中的数字相匹配。

标签: pythonopencv

解决方案


我认为您正在对事物进行分类,并且您只有类号,但想要与该类对应的完整扩展目录名称。

因此,我的计划是获取当前目录中名称以数字开头的所有目录的列表。然后制作一个查找表(dict),这样如果您使用类号作为键,您将获得完整的目录名称:

#!/usr/bin/env python3

import re
import os
import glob

# Get list of all entries in current directory that start with a number and are directories
# nDirs are "numbered directories"
nDirs = [path for path in glob.glob('[1-9]*') if os.path.isdir(path)]

# Make a dict where you can lookup the directory name if you have its number
nToName = {re.match(r'^(\d+)',path).group(0):path for path in nDirs}

# Print whole lookup table - just for debug
print(nToName)
{'99': '99 - Pear', '2': '2 - Apple', '1': '1 - Banana'}

所以,如果你的班级是2并且你想要目录,你会这样做:

directory = nToName.get('2')

这将导致:

'2 - Apple'

推荐阅读