Opencv具有DNN接口,用于加载(深度)神经网络的预训练模型,这些模型是通过caffe,tensorflow,pytorch和darknet学习的。要将图像应用于网络,可通过blobFromImage
将其转换为斑点。例如在C ++中:
cv::Mat img = cv::imread('lena.png')
cv::Scalar mean(104,117,123,0);
cv::Mat blob = cv::dnn::blobFromImage (img, 1.0, cv::Size(), mean, false, false)
参数mean
允许减去在训练集上计算出的BGR通道的平均值。但是,在原始的caffe
框架中,还可以减去一个完整的平均图像,而不是每个颜色通道只有一个平均值。数据层的配置文件如下:
layer {
name: "data"
#... give "type" and "top"
transform_param {
mean_file: "/path/to/imagenet_mean.binaryproto"
# an alternative was to set the average values:
#mean_value: 104
#mean_value: 117
#mean_value: 123
}
# ... other params of input layer...
}
是否有办法用opencv dnn::blobFromImage
减去这样的“完整图像均值”而不是每个颜色通道的单个值?