Python包含一个字符串和一个intiger计数器来命名折叠中的内容

2024-06-24 13:17:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是widows10pro,python3.6.2rc1。我正在训练一个由tensorflow制作的卷积神经网络。作为预处理阶段,我编写了以下代码来调整每个图像的大小。它工作得很好,但由于我有100多个训练图像(我把它设置得很低,只是为了看看它现在是如何工作的),最后我希望所有这些图像都遵循与“image001”、“image002”等中相同的命名约定,我添加了一个计数器,并使用它来更改图像的名称,然后使用cv2.imwrite()将其保存到同一个文件夹中。但我得到了一个错误:

Traceback (most recent call last):
  File "E:/Python/TrainingData/TrainingPrep.py", line 11, in <module>
    cv2.imwrite(imageName,re)
cv2.error: D:\Build\OpenCV\opencv-3.2.0\modules\imgcodecs\src\loadsave.cpp:531: error: (-2) could not find a writer for the specified extension in function cv::imwrite_

^{pr2}$

我需要我的图像名为image001,image00x。如果你能帮我解决这个问题,我将不胜感激。在

非常感谢。在


Tags: 代码in图像tensorflow计数器神经网络errorcv2
2条回答

imwrite方法需要扩展名来确定文件格式。在

只需将行更改为(对于PNG,或任何您想要的文件格式),它应该可以工作:

imageName = "image"+counter+".png"

如果需要,可以稍后使用glob.glob重命名这些文件。一个有效的例子应该是这样的:

^{pr2}$

此方法将在文件名中提供所需的前导零:

import cv2
import glob

i=0
images = glob.glob("*.jpg")
for image in images:
    img = cv2.imread(image,1)
    re = cv2.resize(img,(128,128))
    imageName = "image{:03d}.png".format(i) # format i as 3 characters with leading zeros
    cv2.imwrite(imageName,re)
    i=i+1
    print(counter)

相关问题 更多 >