Масштабирование OpenCV Mat для Caffe

Я следил за примером Caffe MINST и пытался развернуть тест обученная модель с C ++, где я использую OpenCV для чтения изображений. В примере они упоминают, как для обучающих и тестовых изображений они

масштабируйте входящие пиксели так, чтобы они находились в диапазоне [0,1). Почему 0.00390625? 1 делится на 256.

Я слышал, что в Caffe есть класс DataTransformer, который можно использовать для масштабирования изображений, но если я умножу каждый пиксель в объекте OpenCV Mat на 0,00390625, даст ли это тот же результат?


person Jack Simpson    schedule 26.08.2015    source источник


Ответы (1)


Идея правильная. Но не забудьте преобразовать ваши маты OpenCV в плавающий или двойной тип перед масштабированием.

Что-то вроде:

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);
person herohuyongtao    schedule 26.08.2015
comment
Спасибо! Также хорошая идея о преобразовании, чтобы избежать усечения! - person Jack Simpson; 26.08.2015