3. Обработка изображения — преобразуем изображение в монохромное (monochrome) и инвертирует его (invert). На скриншоте снизу мы применяем фильтры, в левом верхнем углу можно увидеть изображение, на которое были применены фильтры.
❤🔥4
5. Пытаемся распознать баркод с использованием Vision Framework для разных ориентаций изображения (.up, .right, .left, .down). Разных типов изображений (монохромное, инвертированное). Если штрихкод найден, вызываем
onBarcodeRead
и прекращает дальнейший анализ. На картинках показано обнаружение баркода в разных ориентациях❤🔥2
При обработке изображений мы используем следующие методы для обработки
1.
2.
Эти преобразования повышают вероятность успешного распознавания баркода в различных условиях при недостаточном освещении.
1.
invert
— инвертирует цвета изображения. Использует фильтр CIColorMatrix
для инверсии цветовых каналов. Про ColorMatrix можно почитать здесь: https://docs.rainmeter.net/tips/colormatrix-guide/2.
monochrome
— преобразует изображение в черно-белое. Регулирует яркость, контраст и насыщенность через фильтр CIColorControls
, увеличиваем экспозицию с помощью CIExposureAdjust
.Эти преобразования повышают вероятность успешного распознавания баркода в различных условиях при недостаточном освещении.
❤🔥3
До и После
До
1. Не могли отсканировать баркод средствами библиотек (
2. Не могли кастомизировать библиотеки таким образом, чтобы кропнуть зону поиска.
3. Невозможно было наложить фильтры, на том же Android без инвертирования изображения, сканирование баркода было всегда безуспешным.
4. Не могли выбрать нужную камеру,
После
1. Получили полностью кастомный модуль, который легко можно настроить под свои нужды.
2. Сканируем баркод на всевозможных iOS и Android устройствах.
3. Не думаем искать готовое решение, перебирая кучу библиотек.
До
1. Не могли отсканировать баркод средствами библиотек (
react-native-vision
).2. Не могли кастомизировать библиотеки таким образом, чтобы кропнуть зону поиска.
3. Невозможно было наложить фильтры, на том же Android без инвертирования изображения, сканирование баркода было всегда безуспешным.
4. Не могли выбрать нужную камеру,
После
1. Получили полностью кастомный модуль, который легко можно настроить под свои нужды.
2. Сканируем баркод на всевозможных iOS и Android устройствах.
3. Не думаем искать готовое решение, перебирая кучу библиотек.
❤🔥3👍1
Другие модули, которые мы написали в рамках данного проекта:
1. Модуль для подключения по Wifi.
2. Модуль для взаимодействия с Ricoh 360 camera (получение live stream, снятие фото, удаление, получение настроек).
3. Просмотрщик 360 фотографий.
Также нам помогали нативные разработчики для написания:
• модуля для создания RoomScan, RoomPlan;
• модуля для создания 360 фото, используя камеру телефона (панорамы).
1. Модуль для подключения по Wifi.
2. Модуль для взаимодействия с Ricoh 360 camera (получение live stream, снятие фото, удаление, получение настроек).
3. Просмотрщик 360 фотографий.
Также нам помогали нативные разработчики для написания:
• модуля для создания RoomScan, RoomPlan;
• модуля для создания 360 фото, используя камеру телефона (панорамы).
❤🔥3
Плюсы использования нативных модулей очевидны — это, во-первых, полный контроль над ходом решения задачи, во-вторых появляется уверенность в том, что нельзя решить задачу, если нет соответствующей библиотеки (например для того же наложения фильтров на изображения).
Из минусов, пожалуй, только страхи, что нужно лезть в нативный код и что-то писать самому, но вы всегда можете попросить помощи нативных разработчиков, которые могут подсказать вам, проревьюить ваш код или даже написать его. Но самостоятельные попытки покопаться в нативном коде, на мой взгляд, точно помогут подтянуть свои скилы и улучшить перспективы на рынке труда по сравнению с кандидатами, которые используют React Native без погружения в натив. Последнее, по-моему, невозможно, мне также близок JavaScript и TypeScript, но поставленные задачи как-то приходится решать, поэтому избежать написания нативных модулей не получилось.
Несмотря на то, что я писал нативные модули на многих проектах, сказать, что хорошо научился писать нативный код точно не могу (так что не кидайте камни в мой огород, глядя на исходный код). Все же я хочу оставаться React/React-Native разработчиком.
Из минусов, пожалуй, только страхи, что нужно лезть в нативный код и что-то писать самому, но вы всегда можете попросить помощи нативных разработчиков, которые могут подсказать вам, проревьюить ваш код или даже написать его. Но самостоятельные попытки покопаться в нативном коде, на мой взгляд, точно помогут подтянуть свои скилы и улучшить перспективы на рынке труда по сравнению с кандидатами, которые используют React Native без погружения в натив. Последнее, по-моему, невозможно, мне также близок JavaScript и TypeScript, но поставленные задачи как-то приходится решать, поэтому избежать написания нативных модулей не получилось.
Несмотря на то, что я писал нативные модули на многих проектах, сказать, что хорошо научился писать нативный код точно не могу (так что не кидайте камни в мой огород, глядя на исходный код). Все же я хочу оставаться React/React-Native разработчиком.
❤🔥3
В завершение хочу сказать вот что. Не бойтесь писать нативные модули, начните с малого. Например, можете начать с этой ссылки: https://reactnative.dev/docs/native-platform
Всем спасибо за ваши реакции и комментарии! До следующих встреч! 🫶
Всем спасибо за ваши реакции и комментарии! До следующих встреч! 🫶
reactnative.dev
Native Platform · React Native
Your application may need access to platform features that aren’t directly available from react-native or one of the hundreds of third-party libraries maintained by the community. Maybe you want to reuse some existing Objective-C, Swift, Java, Kotlin or C++…
❤🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Пока мы тут марафонили, Microsoft опубликовала ИИ-агент OmniParser v2. Он прямо таки работает за вас, ориентируется в браузере и при этом, вы видите все, что он делает.
#ai
#ai
❤3🔥2
Актуальные вакансии февраля — кого мы ищем прямо сейчас
От нас:
- удалёнка без привязки к конкретной стране,
- гибкий график,
- возможность работать по контракту заграницей,
- внутренние курсы английского,
- стабильные долгие проекты,
- новый ПК или мак для работы в любую точку мира,
- сильная команда.
Откликнуться можно прямо на сайте или через почту [email protected].
#jobs
От нас:
- удалёнка без привязки к конкретной стране,
- гибкий график,
- возможность работать по контракту заграницей,
- внутренние курсы английского,
- стабильные долгие проекты,
- новый ПК или мак для работы в любую точку мира,
- сильная команда.
Откликнуться можно прямо на сайте или через почту [email protected].
#jobs
От одноразовых покупок к подпискам: как мы внедряли подписки ничего о них не зная
📃 https://mrk.dev/subscriptions
Читайте статью от Паши Чернова — нашего бэкенд-разработчика и автора одно из марафонов на этом канале.
Статья на английском в нашем Linkedin: https://mrk.dev/subscriptions
📃 https://mrk.dev/subscriptions
Это история будет о том, как в условиях жестких дедлайнов и минимальных ресурсов мы, двое разработчиков, были вынуждены внедрить подписки через сторонние сервисы, такие как Google Play, App Store и Stripe на нашем проекте. Некоторые детали намеренно были опущены для сохранения драматургии и подписанного NDA. Проект уже включал сложные функции, такие как система рекомендаций, лидерборды, вознаграждения, разные роли пользователей и все это размазано на микросервисы. Кстати, мог ли пользователь сменить роль в любой момент? Это было бы намного проще, если бы не мог, не так ли?
Читайте статью от Паши Чернова — нашего бэкенд-разработчика и автора одно из марафонов на этом канале.
Статья на английском в нашем Linkedin: https://mrk.dev/subscriptions
Linkedin
From One-Time Purchases to Subscriptions: How We Implemented Subscriptions Without Knowing a Thing About Them
This is the story of how, under tight deadlines and minimal resources, we—two developers—had to implement subscriptions through third-party services like Google Play, App Store, and Stripe in our project. Some details have been intentionally left out to maintain…
❤4
image-palette-webgpu
— крошечная JS-библиотека без единой зависимости для браузеров, которая извлекает доминирующие цвета из изображений с помощью различных алгоритмов, используя WebGPU API.Библиотека разработана Иваном Людвигом Терешко и нашим ведущим инженером и экспертом в области веб-технологий Алексеем Родионовым.
В отличие от других подобных библиотек, в
image-palette-webgpu
алгоритмы реализованы в виде шейдеров на языке WGSL (WebGPU Shading Language) и исполняются на вычислительных ядрах GPU, способных выполнять работу параллельно.NPM: https://npmjs.com/package/image-palette-webgpu
GitHub: https://github.com/IvanLudvig/image-palette-webgpu
Живое демо: https://ivanludvig.dev/image-palette-webgpu/
Также в планах добавить тесты и бенчмарки.
#web
❤3👍2🌭2
Меня зовут Женя и в сентябре прошлого года я отметила свою 11 годовщину в Меркури. Сейчас я работаю менеджером проектов, много путешествую параллельно с работой и прошла путь от заявки на разработку до релиза с внушительным числом проектов и заказчиков с известными именами. Но тем далеким сентябрем я пришла в компанию на позицию джуниор QA…
#career
#career
🔥27❤🔥4🥰3❤1👍1