我一直关注Caffe MINST example并尝试使用C ++部署受过训练的模型的测试,我使用OpenCV来读取图像。在这个例子中,他们提到了如何训练和测试图像
缩放传入的像素,使它们在[0,1]范围内。为什么 0.00390625?它是1除以256。
我已经听说过Caffe中的DataTransformer类如何用于缩放图像,但是如果我将OpenCV Mat对象中的每个像素乘以0.00390625会产生相同的结果吗?
答案 0 :(得分:3)
这个想法是正确的。但请记住在缩放之前将OpenCV Mats转换为float或double类型。
类似的东西:
cv::Mat mat; // assume this is one of your images (grayscale)
/* convert it to float */
mat.convertTo(mat, CV_32FC1); // use CV_32FC3 for color images
/* scaling here */
mat = mat * 0.00390625;
更新#1 :转换和缩放也可以简单地在一行中完成,即
cv::Mat mat; // assume this is one of your images (grayscale)
/* convert and scale here */
mat.convertTo(mat, CV_32FC1, 0.00390625);