Как я могу сделать матрицу такой же, как набор данных изображений MNIST.

#c #opencv #mnist

#c #opencv #mnist

Вопрос:

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

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

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

пожалуйста, посоветуйте. me.

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

Ответ №1:

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 .

Комментарии:

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