Я пытаюсь создать векторную матрицу, которая совпадает с набором данных изображений MNIST.
Каждое изображение с веб-камеры захватывается и сохраняется в векторе. Однако созданная мной матрица отличается от набора данных MNIST. Таким образом, основной код не работает для матрицы, которую я создал.
Я думал, что, возможно, это потому, что тип пикселей отличается.
Что я заметил, так это то, что когда я искал одну матрицу из данных MNIST, она имела 15 десятичных знаков. Однако я не смог установить 15 десятичных знаков. Когда я установил изображение, чтобы быть CV_FC64. Это показывает следующее сообщение об ошибке.
«Ошибка подтверждения в cv :: cvtColor, путь к файлу C: \ file.»
Основной код работает для набора данных 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);
}
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
,
Других решений пока нет …