MTCNN模型用python或c++代码实现人脸检测和对齐需要注意的读入图片格式转换

注意点1:

首先MTCNN作者训练模型使用的图片通道顺序为RGB,在python或c++代码中用opencv读入的图片默认通道顺序为BGR,所以需要进行一个通道顺序转换。python代码如下:

img = cv2.imread(img_path)
tmp = img[:, :, 2].copy()  # bgr到rgb变换
img[:, :, 2] = img[:, :, 0]
img[:, :, 0] = tmp

注意点2:

MTCNN作者训练模型是用matlab的代码训练的,在matlab中数据在内存中的存储方式是按列存储的,比如一个[1,2,3;4,5,6]矩阵,那么它在内存当中的存储顺序为[1,4,2,5,3,6]。但是在python或c++中数据的存储方式是按行存储的,这两者之间正好是一个转置的关系。在python或c++代码里面图片一般都是用opencv读进来的,opencv默认的图像shape为height*width*channel,用caffe测试时输入的图像shape为channel*height*width,但是使用的模型是matlab(caffe)训练的所以为了和训练时图片的存储方式保持一致需要将图片的shape转换为channel*width*height。python代码如下:

img = cv2.imread(imgpath)
img = np.swapaxes(img, 0,2)
 

你可能感兴趣的:(MTCNN模型用python或c++代码实现人脸检测和对齐需要注意的读入图片格式转换)