Этот код эксперимента был загруженХлеба много, пожалуйста, нажмите, чтобы купить, или обратите внимание на официальный аккаунт [All Code Farmers], ответьте [ближайшим соседям] и получите его бесплатно в течение ограниченного времени!
Обзор эксперимента
В этом эксперименте для идентификации и обнаружения рукописных цифр с соответствующими алгоритмами используются OpenCV, Python и другие инструменты.Для обучения могут быть предоставлены обучающие наборы и тестовые наборы, а для тестирования могут быть введены рукописные шрифты.
Выполнив этот эксперимент самостоятельно, я могу значительно улучшить свое понимание Python и OpenCV, а также освоить технологию извлечения признаков рукописных цифр и метод сопоставления шаблонов ближайших соседей.
Экологическая записка
Система: виндовс 10
Программное обеспечение: PyCharm Community Edition 2020.2.2 x64
Язык: питон 3.6
Среда: cv2, numpy, matplotlib.pyplot, время
набор данных
Этот набор данных состоит из 100 изображений, чисел 0-9, 10 изображений для каждого числа, 8 обучающих наборов и 2 тестовых наборов. следующее:
Рис. 1. Нулевая цифра | Рисунок 2 Номер один |
---|---|
Рисунок 3 Номер два | Рисунок 4 Номер три |
Значение терминов
Учебный набор: параметры модели можно обучить, чтобы модель соответствовала правильной функции прогнозирования.
Набор тестов: протестируйте обученную модель, чтобы оценить способность итоговой модели к обобщению.
Набор проверки: используется для настройки гиперпараметров и контроля за переобучением модели.
Заявление о потребностях
Экспериментальный контент
\ 1. Научиться использовать метод сканирования строк и столбцов для получения подпрограммы верхнего, нижнего, левого и правого положения рукописных цифр.
\ 2. Разработайте алгоритм извлечения признаков для рукописных цифр и напишите соответствующую программу извлечения признаков.
3. Напишите программу распознавания рукописных цифр, основанную на сопоставлении с шаблоном ближайшего соседа.
Экспериментальные результаты и анализ
Запишите входные числа 0-9, каждое с 10, соответствующие результаты распознавания после запуска программы и проведите углубленный анализ результатов.
\ 1. Запишите визуализацию извлечения признаков каждого образца.
\ 2. Запишите нормированные собственные значения, соответствующие выборке.
\ 3. Подсчитайте правильную скорость распознавания каждого числа. Глубокий анализ ошибочно идентифицированных ситуаций.
дизайн программного обеспечения
1. Схема конструкции системы
список функций
Имя функции | Краткое описание функции | Краткое описание функционального интерфейса |
---|---|---|
ImgToNp() | Импортируйте путь изображения в матрицу. | Вход: Нет Выход: Матрица пути изображения |
outFeature() | Обработайте функции признаков и пометьте их. | Вход: матрица пути изображения. Выход: набор матриц обучающих изображений и набор меток. |
star() | Программа выполняет циклическое тестирование и вывод в соответствии с заданной структурой. | Вход: набор матриц обучающих изображений и набор меток. Выход: результат обучения. |
TestImgToNp() | Введите тестовые изображения и преобразуйте их в матрицы. | Вход: адрес тестового изображения. Выход: матрица тестового изображения. |
outfeatureImg() | Карта выходных признаков и собственные значения. | Входные данные: набор матриц обучающих изображений. Выходные данные: сохранить карту признаков и значение признака в файл. \ |
Введение кода
(1) Код Mainapp.py
mainapp.py — основная программа, и в нее включены функции из списка функций в таблице 1.
После запуска программа сначала использует функцию ImgToNp(), чтобы преобразовать 80 образцов изображений в папке 0-9 в папке img в матрицу, сохранить ее в переменной и вернуть.
4. Экспериментальные результаты
После запуска mainapp.py окно вывода выглядит следующим образом:
\1. 图片地址以导入矩阵......
\2. 准备提取特征......
\3. 特征以存储于feature矩阵......
\4. 准备贴标签......
\5. 标签以贴完......
\6. 是否输出特征图与特征值?y/n:
При вводе y программа выводит значения функций и карты функций 80 образцов, которые хранятся в «./fandimg/{0-9}» и «./fandimg/featureArray/{0-9}». соответственно. Как показано ниже:
程序继续运行,输出框输出:
1. 3-9.bmp 这张图判断错误了,系统判断为:1 最接近的三个结果为:[[3. 7. 1.]]但是正确结果为:3
2. 4-9.bmp 这张图判断错误了,系统判断为:1 最接近的三个结果为:[[1. 1. 1.]]但是正确结果为:4
3. 5-10.bmp 这张图判断错误了,系统判断为:1 最接近的三个结果为:[[5. 1. 1.]]但是正确结果为:5
4. 6-10.bmp 这张图判断错误了,系统判断为:1 最接近的三个结果为:[[1. 1. 1.]]但是正确结果为:6
5. 7-9.bmp 这张图判断错误了,系统判断为:1 最接近的三个结果为:[[1. 1. 1.]]但是正确结果为:7
6. 8-9.bmp 这张图判断错误了,系统判断为:3 最接近的三个结果为:[[8. 9. 3.]]但是正确结果为:8
7. 8-10.bmp 这张图判断错误了,系统判断为:9 最接近的三个结果为:[[8. 9. 9.]]但是正确结果为:8
8. 9-9.bmp 这张图判断错误了,系统判断为:1 最接近的三个结果为:[[9. 7. 1.]]但是正确结果为:9
f