用于Caffe的缩放OpenCV垫 我一直在跟踪并尝试C++中的训练模型的测试,在这里我用OpenCV来读取图像。在这个例子中,他们提到了他们如何为训练和测试图像

用于Caffe的缩放OpenCV垫 我一直在跟踪并尝试C++中的训练模型的测试,在这里我用OpenCV来读取图像。在这个例子中,他们提到了他们如何为训练和测试图像,opencv,machine-learning,neural-network,deep-learning,caffe,Opencv,Machine Learning,Neural Network,Deep Learning,Caffe,缩放传入像素,使其位于[0,1]范围内。为什么 0.00390625?它是1除以256 我听说过Caffe中有一个DataTransformer类,可以用来缩放图像,但是如果我将OpenCV Mat对象中的每个像素乘以0.00390625,会得到相同的结果吗?这个想法是正确的。但是记住在缩放之前将OpenCV Mats转换为浮点或双精度类型 比如: cv::Mat mat; // assume this is one of your images (grayscale) /* convert

缩放传入像素,使其位于[0,1]范围内。为什么 0.00390625?它是1除以256


我听说过Caffe中有一个DataTransformer类,可以用来缩放图像,但是如果我将OpenCV Mat对象中的每个像素乘以0.00390625,会得到相同的结果吗?

这个想法是正确的。但是记住在缩放之前将OpenCV Mats转换为浮点或双精度类型

比如:

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);

谢谢!关于转换的另一个好主意是避免任何截断!