Subset_name = head.split('/')[-2] IndexError:列表索引超出范围

时间:2019-05-16 10:46:12

标签: python opencv tensorflow neural-network deep-learning

我正在尝试执行一个从ibug数据集中提取人脸的脚本, 我已经从github克隆了这个项目,并且尝试执行以下python脚本:

  

python3 extract_face_from_ibug.py

我收到此错误消息

Error Message

系统信息:

  • Windows 10 x64
  • python 3.6
  • tensorflow 1.13.1
  • OpenCV 4

     # Extract face image and new points.
    face_image, points_normalized = extract_face(image, points)
    
    # Mark the result
    points_restored = []
    for point in points_normalized:
        points_restored.append([point[0] * TARGET_SIZE, point[1] * TARGET_SIZE])
    pt.draw_landmark_point(face_image, points_restored)
    
    # New file to be written.
    # CAUTION: remember to set a correct name for different dataset.
    head, tail = os.path.split(file_name)
    subset_name = head.split('/')[-2]
    common_file_name = tail.split('.')[-2]
    common_url = os.path.join(
        TARGET_DIR, "300vw-" + subset_name + "-" + common_file_name)
    
    # Save the Image.
    image_url = common_url + ".jpg"
    cv2.imwrite(image_url, face_image)
    

原始代码:

  

https://github.com/yinguobing/image_utility/blob/master/extract_face_from_ibug.py

1 个答案:

答案 0 :(得分:0)

您的代码期望file_name包含正斜杠/,并从文件路径的元素派生子集名称。但是您使用的是Windows系统,并且系统路径分隔符为/。因此,您需要将呼叫固定为split()。尝试使用与平台无关的同一版本:

subset_name = head.split(os.path.sep)[-2]

这是代码作者应首先编写的内容。