Python-以10为底的int()的无效文字:'x'

时间:2019-06-15 06:17:41

标签: python opencv cv2

我正在开发一个程序来检测面部并锁定计算机,如果实时存在某些未知的面部。我先收集21张图像,然后训练模型,但是当程序将所有图像存储在本地数据集中时出现错误,然后“我的标题”是程序中的错误,

ID = int(os.path.split(imagePath)[-1].split('.')[1])

我尝试安装numpy,枕头,最新的opencv,opencv-python,最新的python,pip3,cv2

def getImageWithID(path):
    imagePaths = [os.path.join(path,f) for f in os.listdir(path)]
    #print(f"{imagePaths}\n")
    for imagePath in imagePaths:
        faceImg = Image.open(imagePath).convert('L')
        #cv2.imshow('faceImg', faceImg)
        faceNp = np.array(faceImg, 'uint8')
        ID = int(os.path.split(imagePath)[-1].split('.')[1])
        #print(ID)

我希望程序将结果存储在.yml文件中。但是,程序不会将Trainer的记录保存到.yml文件,因为它发生错误,我希望如果此错误得到解决,那么将有望创建.yml文件。请帮忙。

2 个答案:

答案 0 :(得分:0)

我认为您的路径是绝对的,而不是相对的(有关更多信息,请参见this)。 那么我假设imagePath/home/user/docs/1.png,那么让我们看看我们拥有什么:

>>> os.path.split(imagePath)[-1].split('.')
['1', 'png']
>>> os.path.split(imagePath)[-1].split('.')[1]
'png'
>>> ID = int(os.path.split(imagePath)[-1].split('.')[1])
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'png'

所以您的文件名可能是'somenumber.x'? 尝试将[1]修改为[0]

ID = int(os.path.split(imagePath)[-1].split('.')[0])

答案 1 :(得分:0)

您要使用什么路径?

您可以使用glob抓取路径,这非常简单

带有'**'的

recursive = True 搜索当前的所有文件夹,并返回具有文件名的路径列表

import os
from glob import glob

files = glob('**\\*.txt', recursive=True)  # '**' is used to search in any folder, 
# '*' is wild card, use it to fit with file formats

for path in files:
    print(path)  # this is relative path
    print(os.path.abspath(path))  # this will convert relative path to absolute

如果只想使用文件名,则不要这样: ID = int(os.path.split(imagePath)[-1].split('.')[1])

您应该只使用os.path.basename(path)

name = (os.path.basename(path).split('.')[0])
file_format = (os.path.basename(path).split('.')[1])