输入图片是112*112,三通道,我是这样读的图片
img = cv2.imread(img_path, -1)
-1 是按照图片的原通道读入,结果在运行中报错:
50176个元素不能reshape成(112,112,3),以为处理的数据有问题,混进了224×224的图,因为224×224刚好为50176,但把进来的图都resize成了112,还是会报错,找了好久,发现有的图维度是(112,112,4),多出来一个透明的alpha通道,112×112×4也为50176,改的地方如下:
img = cv2.imread(img_path, 1)
改为1,就是读入三通道,程序正常运行。不写第二个参数,默认的就是1读入一幅彩色三通道图像
另外还有一个小bug, 记录以下,从服务器已 img = cv2.imread(img_path)这种方式将图片保存到本机,发现检测不出图片中的人脸,像素值都接近0或1,改为img = cv2.imread(img_path,-1)后图片正常,这应该是因为我的图是16位深的单通道图,要像素值除4才能可视化,如下:
这会按照
img = cv2.imread(img_path)
读图片,真的只读了一个黑黑的图,所以像素值差不多都为0,已经不注意被坑了两次了,记录一下。