#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. Спасибо! Это было решение!