1.Code
import os import numpy as np import sys import cv2 import time import random def detect(imgPath, imgLabel): # Read Image frame = cv2.imread(imgPath) if True: # Subtraction from mean file crop = cv2.resize(frame, (256, 256)) # Showing output cv2.imshow("Gender Detection",crop) cv2.waitKey(0) def main(argv): assert (len(argv) == 2) original_txt = argv[1] with open(original_txt) as f: def_lines = f.readlines() def_lines.pop(0) full_list = [] for def_line in def_lines: def_dic = {} image_dir = def_line.split(' ')[0] temp = def_line.split(' ')[1] image_label = temp.split('\n')[0] image_name = '/home/zhuxiuhong/dataset/age_gender/DATA/aligned/{0}'.format(image_dir) def_dic['image_name'] = image_name def_dic['image_label'] = image_label full_list.append(def_dic) images_num = len(full_list) for ind in range(images_num): image_name = full_list[ind]['image_name'] image_label = full_list[ind]['image_label'] detect(image_name, image_label) if __name__ == '__main__': print(__doc__) import sys main(sys.argv)
2.Error
3.Solution
当cv2.imread()读入图像的路径不存在时,frame为None,再对其进行cv2.resize(),发生错误
frame = cv2.imread(imgPath)
加入语句:
if(frame == None): return
修改后如下:
import os import numpy as np import sys import cv2 import time import random def detect(imgPath, imgLabel): # Read Image frame = cv2.imread(imgPath) if(frame == None): return if True: # Subtraction from mean file crop = cv2.resize(frame, (256, 256)) # Showing output cv2.imshow("Gender Detection",crop) cv2.waitKey(0) def main(argv): assert (len(argv) == 2) original_txt = argv[1] with open(original_txt) as f: def_lines = f.readlines() def_lines.pop(0) full_list = [] for def_line in def_lines: def_dic = {} image_dir = def_line.split(' ')[0] temp = def_line.split(' ')[1] image_label = temp.split('\n')[0] image_name = '/home/zhuxiuhong/dataset/age_gender/DATA/aligned/{0}'.format(image_dir) def_dic['image_name'] = image_name def_dic['image_label'] = image_label full_list.append(def_dic) images_num = len(full_list) for ind in range(images_num): image_name = full_list[ind]['image_name'] image_label = full_list[ind]['image_label'] detect(image_name, image_label) if __name__ == '__main__': print(__doc__) import sys main(sys.argv)
注意:码代码要把意外情况考虑全面