Здравствуйте, кто нибудь конвертировал андроидовский NV21 в QImage(rgb32) или лучше

в cv::mat? может у кого сохранились куски кода валидной конвертации, много перепробовал но всегда какая то фигня на выходе

20 ответов

28 просмотров

Если в коде много работы с виде фреймами почему сразу не втащить sws_scale

Ivan-Ярмолович Автор вопроса
🇮🇹 Yury
Если в коде много работы с виде фреймами почему ср...

Спасибо, похоже это то, что нужно, но пока непонято как использовать, в гугле много ответов где люди yuv420(nv21) преобразовывают в rgb юзая sws_scale но там какая то магия, буду думать как с QVideoFrame такое сделать

Ivan Ярмолович
Спасибо, похоже это то, что нужно, но пока непонят...

Никакой магии там нет. Берем nv12 буффер и черз sws scale конвертим прямо в qvideo frame

Ivan-Ярмолович Автор вопроса
🇮🇹 Yury
Никакой магии там нет. Берем nv12 буффер и черз s...

У меня с камеры фреймы приходят, и мне нужно их скормить opencv чтобы распознать точки и лицо, фреймы приходят в NV21, вот я и ищу способ из QVideoFrame NV21 конвертнуть в cv::mat или QImage, я с nv12 видел что то, но с nv21 только громоздкие решения которые при потоковом видео сьедают память и лагают

Ivan Ярмолович
У меня с камеры фреймы приходят, и мне нужно их ск...

я вот эту функцию просто вызываю: qt_imageFromVideoFrame есть в заголовке такое у меня: extern void QT_FASTCALL qt_convert_NV21_to_ARGB32(const QVideoFrame&, uchar*); #if !(QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)) extern QImage qt_imageFromVideoFrame(const QVideoFrame &f); #endif Раньше видимо использовал qt_convert_NV21_to_ARGB32, а потом заменил со второй

Ivan-Ярмолович Автор вопроса
Sergey eSKon
я вот эту функцию просто вызываю: qt_imageFromVide...

Ого, я о таком вообще не знал, спасибо, попробую

Ivan Ярмолович
Ого, я о таком вообще не знал, спасибо, попробую

ну его нет в доках, насколько я знаю. Так что учитывайте, что бинарную совместимость можете потерять. А чтобы не потерять, просто возьмите их исходники, да скопируйте реализацию себе

Ivan-Ярмолович Автор вопроса
Sergey eSKon
ну его нет в доках, насколько я знаю. Так что учит...

Главное лицензию не нарушить, они ж запрещают исходники менять

Ivan Ярмолович
Главное лицензию не нарушить, они ж запрещают исхо...

так вы не меняйте их исходники, скопируйте код, да назовите эту функцию myCoolConverter_noItsNotFromQt

Sergey eSKon
так вы не меняйте их исходники, скопируйте код, да...

Это тоже нарушение лицензии, насколько я знаю

Ivan-Ярмолович Автор вопроса
Serhii Olendarenko
Это тоже нарушение лицензии, насколько я знаю

Вот я этого и опасаюсь, читал что с исходниками вообще делать ничего нельзя, ни изменять ни брать

Ivan Ярмолович
Вот я этого и опасаюсь, читал что с исходниками во...

вы не поняли. Импорт функции ничего с исходниками не делает. Речь о бинарной совместимости. то есть вы не сможете подменить qt dll или so 5.5 на, скажем 5.6

Serhii Olendarenko
Это тоже нарушение лицензии, насколько я знаю

ну мы же никому не расскажем, что Ваня так сделал 😉

Ivan-Ярмолович Автор вопроса
Sergey eSKon
ну мы же никому не расскажем, что Ваня так сделал ...

Впрыынцыпе да, это не всплывет, жесть я задолбался с qt под андроид и его болячками, то большие изображения, то этот NV21 который хрен конвертнешь, попробую сейчас победить все таки

Ivan Ярмолович
Впрыынцыпе да, это не всплывет, жесть я задолбался...

лучше всё-таки сделайте с импортом, это лучше по многим причинам. Если они что-то улучшат, исправят, то вы обновив кьют автоматом это улучшение получите, а так вам придётся следить за изменениями. Двоичная совместимость на андроиде вам вряд ли понадобится. Да и смысл писать то, что уже написано

Ivan-Ярмолович Автор вопроса
Sergey eSKon
лучше всё-таки сделайте с импортом, это лучше по м...

Так я ж в любом случае буду допиливать и релизить на qt 5.15, разве какие то изменения коснутся релизной версии? Они ж 6 qt занимаются уже, на него ещё рано лезть

Ivan Ярмолович
Так я ж в любом случае буду допиливать и релизить ...

импорт просто делайте и используйте qt_imageFromVideoFrame И, кстати, никаких особых проблем на андроиде сейчас нет. Несколько лет назад когда они только запустили мобильную версию их было действительно много, до сих пор в коде периодически костыли вылавливаю и заменяю нормальным кодом. А с новым проектом никаких особых проблем не должно возникать

Ivan-Ярмолович Автор вопроса
Sergey eSKon
импорт просто делайте и используйте qt_imageFromVi...

ну у меня была проблема с перебросом каскадов хаара в андроид, это обычный xml файл, в студии я мог бы в ресурсы поместить и потом просто достать в рантайме, а тут пришлось искать writable location и в итоге они сохраняются не в папку с проектом а в downloads и оттуда запускаются, ну и + рекламу если нужно встроить в приложение приходится костыльные либы с кучей jni брать, что тоже не очень благоприятно сказывается на размере и быстродействии приложения

Ivan Ярмолович
ну у меня была проблема с перебросом каскадов хаар...

ну так это не проблемы кьюта, это просто задачи которые так или иначе всё равно пришлось бы решать. А если файл неизменяемый, то поместить его в ресурсы не проблема. Другое дело, что какая-то стороняя библиотека из ресурсов читать не сможет - ну так это проблема библиотеки. В общем это не недоработки команды кьюта

Ivan-Ярмолович Автор вопроса
Sergey eSKon
импорт просто делайте и используйте qt_imageFromVi...

а можете пожалуйста сказать что именно нужно импортнуть? я просто extern функции добавил оно ругается "storage class specified for a member declaration"

Похожие вопросы

Обсуждают сегодня

Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
И? Все равно глазами проверять надо каждое поле
Andrii Kurdiumov
4
Ну есть у нас десяток компаний которым надо. Остальным то зачем?
Andrii Kurdiumov
4
Всем привет! Взялся портировать модули на 18 версию, лезет _logger.log(log_level, 'no translation language detected, skipping translation %s', frame, stack_info=True) А чт...
Max Lit
3
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Доброе утро, а кто то делал Google аналитику через php ? curl_setopt($ch, CURLOPT_NOSIGNAL, true); Это должно быть async без ожидания ответа. Вообще php нормально с таким с...
Max Dubovsky
9
Карта сайта