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

本文详细解析了在使用MTCNN人脸检测模型时的两个关键注意事项:一是从BGR通道顺序转换到RGB,确保与模型训练时的图片通道顺序一致;二是调整图片shape从height*width*channel到channel*width*height,以匹配模型训练时的数据存储方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意点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)

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值