Pyhon тут для примера. Подобные задачи возникают очень часто в MMO играх. Движок, сеть, графика пишутся на C++. А иговая логика на Lua, Pyhton и так далее. В ММО приходится обрабатывать деревья объектов на разных физических узлах. Иногда это просто синхронизация. Иногда более сложные алгоритмы.
У меня стаж 20+. Периодически провожу собеседования на позиции C++.
Я бы вас не взял.
Во первых, все сказанное вами не имеет никакого отношения к C++.
Во вторых. Мне бы хотелось увидеть в решении такой задачи понимание следующих вещей:
а) классы, разграничение доступа, темплейты, работу с указателями. (Junior grade)
б) многопоточность, понимание атомарных операций, объекты синхронизации. (Mid grade)
г) а что если объекты списка являются экземплярами динамически порождаемых классов, например, boost_python и хранятся на разных вычислительных узлах сети и их узел зависит от места или соседа в списке? (Senior grade)
Я десять лет назад делал распознование любого из 3-4 обьектов за 30ms в картинке 320х240 в один поток без нейронок. Но делал хитро.
Вам бы для распознования баркодов рекомендовал бы посмотреть на 2D DCT и FFT. Для баркодов там будут интересные артефакты. Можно также посмотреть на вейвлеты. И обрабатывать это простой статистикой.
100ms и real-time несколько разные вещи. Когда я занимался распознованием у нас был предел 30ms на кадр. В общем без нейронок все это на порядок быстрее.
Перспективные искажения можно и легко исправить с помощью преобразования Хафа.
В 90-х проще делали. Плата с процарапаными (лень травить было) вертикальными проводниками шириной 7-10 мм. Сверху кусок резины (гуглить «жгут резиновый лента») из аптеки с дырками пробитыми пробойником. Поверх нее напаяны тонкие металические пластины из нержавейки (по типу той чем сейчас аккумуляторы вместе сваривают, ага?). Плату перед пайкой чуть согнуть что бы натяжка была.
Следующий слой — на фотобумаге напечатаны кнопки. Тогда рисовались тушью на кальке и просвечивались лампой на фотобумагу. Получаем черный фон с белыми линиями и буквами. Буквы раскаршиваем фломастерами калибровочно инвариантным образом.
Сами кнопки делались из пимптиков для вот такой игры (https://crafta.ua/lots/6536223438-igrushka-sssr-igra-sssr-morskoy-boy-shashki, если ссылка сдохнет — гуглить «игра ссср морской бой шашки»). Фишки для него состоят как бы из трех цилиндров. Длинный средней толщины, короткая толстая юбка, тонкий длинный. Тонкий укорачивается до длинны ~0.5мм.
Толстый вставляется через фотобумагу с рисунком в дырку в оргстекле. Весь сендвич собирается через прокладку из пластика.
Единственный минус. Если клавиатуру трусить — она тарахтит.
Плюсы. Вечная. Цена копейки.
13 Июня 2013-го года я лично выкосил из исходников WebOS копирайты PalmOS и HP и закомитил копирайты LG. На тот момент сохранялась _бинарная_ совместимость с PalmOS и в репозитории были исходники с копирайтами Palm.
WebOS частично открыт на GitHub. Есть ли что-то Palm-овское в открытом коде я не скажу.
Вспомнил одну из старых своих разработок.
А что если без нейронок?
Если нарезать мультфильм на сцены. Т.е. куски когда происходит только плавная смена плана? Или хотя бы режем по I-фреймам.
Для каждого такого куска в YUV делаем ТРЕХМЕРНОЕ преобразование Фурье или вейвлет для Y компоненты. Третьей координатой у нас является время, точнее, номер кадра. Результат фильтруем (ту гугель «повышение резкости изображение FFT»). Таким образом, как минимум, можно избавиться от дерганья изображения между кадрами.
Вангую что хорошие результаты даст преобразование Хаара.
Храню фотографии в каталоге Lightroom. Периодически бекаплю его на внешний винт. Часть фотографий лежит в адобовском облаке. Каталогизация по тегам и каталогам. Плюсы — сохранение исходников, интеграция с телефоном и планшетом. Т.е. с Nikon D800 и D700 я по Wifi или напрямую скидываю фотографии на планшет, Lightroom автоматом синхронизирует их с ноутбуком стоящим дома. Включая весь стек редактирования. По дороге добавляю к ним фотографии сделанные на телефон. Если такое произошло. ;-)
Постоянный каталог на ноутбуке порядка 30-40К фотогафий. Конфигурация — 2x1Tb SSD, 32Gb RAM. +50$ в месяц за полную подписку Adobe.
Думаю что это rocket science. Для нескольких экземпляров проще сделать корпус из стекловолокна. Технология простая до ужаса.
Из плотного пенопласта ножом вырезаем модель. Куски пенопласта клеим между собой клеем ПВА. Замазываем все автомобильной шпаклевкой и шкурим. Ждем пока высохнет.
У вас модель уже есть.
Обмазываем модель солидолом. Убираем лишений. Обклеиваем стеклотканью, формируя ребра жесткости. Важен выбор эпоксидки. Ждем пока высохнет.
Снимаем получившуюся форму с модели. В нее клеим корпус.
Плюсы:
1) корпус может быть практически любой сложной формы.
2) сразу внутри корпуса можно формировать закладные элементы креплений.
3) легко обрабатывается и очень прочный (таким образом самодельщики раньше клеили корпуса для автомобилей, смотри, например, книгу «Я строю автомобиль» 1989-года).
Очень крутая игра была.
Я бы вас не взял.
Во первых, все сказанное вами не имеет никакого отношения к C++.
Во вторых. Мне бы хотелось увидеть в решении такой задачи понимание следующих вещей:
а) классы, разграничение доступа, темплейты, работу с указателями. (Junior grade)
б) многопоточность, понимание атомарных операций, объекты синхронизации. (Mid grade)
г) а что если объекты списка являются экземплярами динамически порождаемых классов, например, boost_python и хранятся на разных вычислительных узлах сети и их узел зависит от места или соседа в списке? (Senior grade)
Вам бы для распознования баркодов рекомендовал бы посмотреть на 2D DCT и FFT. Для баркодов там будут интересные артефакты. Можно также посмотреть на вейвлеты. И обрабатывать это простой статистикой.
Перспективные искажения можно и легко исправить с помощью преобразования Хафа.
Следующий слой — на фотобумаге напечатаны кнопки. Тогда рисовались тушью на кальке и просвечивались лампой на фотобумагу. Получаем черный фон с белыми линиями и буквами. Буквы раскаршиваем фломастерами калибровочно инвариантным образом.
Сами кнопки делались из пимптиков для вот такой игры (https://crafta.ua/lots/6536223438-igrushka-sssr-igra-sssr-morskoy-boy-shashki, если ссылка сдохнет — гуглить «игра ссср морской бой шашки»). Фишки для него состоят как бы из трех цилиндров. Длинный средней толщины, короткая толстая юбка, тонкий длинный. Тонкий укорачивается до длинны ~0.5мм.
Толстый вставляется через фотобумагу с рисунком в дырку в оргстекле. Весь сендвич собирается через прокладку из пластика.
Единственный минус. Если клавиатуру трусить — она тарахтит.
Плюсы. Вечная. Цена копейки.
WebOS частично открыт на GitHub. Есть ли что-то Palm-овское в открытом коде я не скажу.
А что если без нейронок?
Если нарезать мультфильм на сцены. Т.е. куски когда происходит только плавная смена плана? Или хотя бы режем по I-фреймам.
Для каждого такого куска в YUV делаем ТРЕХМЕРНОЕ преобразование Фурье или вейвлет для Y компоненты. Третьей координатой у нас является время, точнее, номер кадра. Результат фильтруем (ту гугель «повышение резкости изображение FFT»). Таким образом, как минимум, можно избавиться от дерганья изображения между кадрами.
Вангую что хорошие результаты даст преобразование Хаара.
Постоянный каталог на ноутбуке порядка 30-40К фотогафий. Конфигурация — 2x1Tb SSD, 32Gb RAM. +50$ в месяц за полную подписку Adobe.
З.Ы. Фотографией не зарабатываю. Просто хобби.
Из плотного пенопласта ножом вырезаем модель. Куски пенопласта клеим между собой клеем ПВА. Замазываем все автомобильной шпаклевкой и шкурим. Ждем пока высохнет.
У вас модель уже есть.
Обмазываем модель солидолом. Убираем лишений. Обклеиваем стеклотканью, формируя ребра жесткости. Важен выбор эпоксидки. Ждем пока высохнет.
Снимаем получившуюся форму с модели. В нее клеим корпус.
Плюсы:
1) корпус может быть практически любой сложной формы.
2) сразу внутри корпуса можно формировать закладные элементы креплений.
3) легко обрабатывается и очень прочный (таким образом самодельщики раньше клеили корпуса для автомобилей, смотри, например, книгу «Я строю автомобиль» 1989-года).