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

Python - Invalid literal for int() with base 10: 'x'

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

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

我尝试安装 numpy、pillow、最新的 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 文件中。但是,程序没有将培训师的记录保存到 .yml 文件中,因为它发生了错误,我希望如果这个错误得到解决,那么 .yml 文件将有望被创建。请帮忙。

我认为您的路径是绝对的,而不是相对的(有关详细信息,请参阅 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])

你把函数放在什么路径?

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

recursive=True 带'**' 搜索当前所有文件夹,returns 文件名路径列表

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])