报错信息:
error: (-215:Assertion failed) VScn::contains(scn) && VDcn::contains(dcn) && VDepth::contains(depth) in function 'cv::CvtHelper<struct cv::Set<3,4,-1>,struct cv::Set<3,4,-1>,struct cv::Set<0,2,5>,2>::CvtHelper'
报错代码:
img_path = glob.glob(r'.\faces\*.jpg')[:10000]
train_images = np.zeros((len(img_path), 96, 96, 3))
for i, image in enumerate(img_path):
pixel = cv.imread(image)
train_images[i] = pixel
image = cv.cvtColor(train_images[0], cv.COLOR_BGR2RGB)
错误原因:
cv.cvtColor中输入的图片的数据形式必须是uint8类型的,虽然cv.imread读取的图片数据类型的确是uint8,但经过train_images[i] = pixel之后,数据类型就已经变成了float64,这是因为在用np.zeros初始化train_images的时候,函数默认赋给train_images了float64类型,所以在转换时报错。
解决方法:
初始化train_images时规定数据类型:
img_path = glob.glob(r'.\faces\*.jpg')[:10000]
train_images = np.zeros((len(img_path), 96, 96, 3), dtype='uint8')
for i, image in enumerate(img_path):
pixel = cv.imread(image)
train_images[i] = pixel
image = cv.cvtColor(train_images[0], cv.COLOR_BGR2RGB)