2016-10-12 5 views
0

Я пытаюсь создать векторную матрицу, такую ​​же, как набор данных изображений MNIST. Каждое изображение с веб-камеры захватывается и сохраняется в векторе. Однако созданная матрица отличается от набора данных MNIST. Таким образом, основной код не работает для созданной мной матрицы.Как сделать матрицу такой же, как набор данных изображений MNIST.

Я думал, что возможно, потому что тип пикселя отличается. Что я заметил, когда я искал одну матрицу из данных MNIST, она имела 15 десятичных знаков. Однако я не смог установить 15 десятичных точек. Когда я устанавливаю изображение как CV_FC64. Он показывает следующее сообщение об ошибке. «не удалось Assertion в сорте :: cvtColor, файл C: \ путь к файлу.»

Основной код работает для MNIST набора данных .. Я не знаю, что делать ..

пожалуйста совет. меня.

while (1) 
    { 
     cap >> src; 

     src.convertTo(src, CV_64FC1); 
     src = src/256; 

     cvtColor(src, src_gray, CV_RGB2GRAY); 
     resize(src_gray, src_N, size); 
     testX.push_back(src_N); 
    } 

ответ

0

cvtColor допускает только 8U, 16U и 32F битовые глубины. Таким образом, после вас convertTo(..., CV_64FC1), бит-глубина 64F и утверждение не: https://github.com/opencv/opencv/blob/84699e0e1860a3485e3dfc12230fbded955dba13/modules/imgproc/src/color.cpp#L8676:

 CV_Assert(depth == CV_8U || depth == CV_16U || depth == CV_32F); 

Если вам действительно нужно 64F, было бы иметь смысл первого cvtColor, а затем увеличить битовую глубину 64F с помощью convertTo.

+0

Спасибо! Это было решение! –