в cv::mat? может у кого сохранились куски кода валидной конвертации, много перепробовал но всегда какая то фигня на выходе
Если в коде много работы с виде фреймами почему сразу не втащить sws_scale
Спасибо, похоже это то, что нужно, но пока непонято как использовать, в гугле много ответов где люди yuv420(nv21) преобразовывают в rgb юзая sws_scale но там какая то магия, буду думать как с QVideoFrame такое сделать
Никакой магии там нет. Берем nv12 буффер и черз sws scale конвертим прямо в qvideo frame
У меня с камеры фреймы приходят, и мне нужно их скормить opencv чтобы распознать точки и лицо, фреймы приходят в NV21, вот я и ищу способ из QVideoFrame NV21 конвертнуть в cv::mat или QImage, я с nv12 видел что то, но с nv21 только громоздкие решения которые при потоковом видео сьедают память и лагают
я вот эту функцию просто вызываю: 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, а потом заменил со второй
Ого, я о таком вообще не знал, спасибо, попробую
ну его нет в доках, насколько я знаю. Так что учитывайте, что бинарную совместимость можете потерять. А чтобы не потерять, просто возьмите их исходники, да скопируйте реализацию себе
Главное лицензию не нарушить, они ж запрещают исходники менять
так вы не меняйте их исходники, скопируйте код, да назовите эту функцию myCoolConverter_noItsNotFromQt
Это тоже нарушение лицензии, насколько я знаю
Вот я этого и опасаюсь, читал что с исходниками вообще делать ничего нельзя, ни изменять ни брать
вы не поняли. Импорт функции ничего с исходниками не делает. Речь о бинарной совместимости. то есть вы не сможете подменить qt dll или so 5.5 на, скажем 5.6
ну мы же никому не расскажем, что Ваня так сделал 😉
Впрыынцыпе да, это не всплывет, жесть я задолбался с qt под андроид и его болячками, то большие изображения, то этот NV21 который хрен конвертнешь, попробую сейчас победить все таки
лучше всё-таки сделайте с импортом, это лучше по многим причинам. Если они что-то улучшат, исправят, то вы обновив кьют автоматом это улучшение получите, а так вам придётся следить за изменениями. Двоичная совместимость на андроиде вам вряд ли понадобится. Да и смысл писать то, что уже написано
Так я ж в любом случае буду допиливать и релизить на qt 5.15, разве какие то изменения коснутся релизной версии? Они ж 6 qt занимаются уже, на него ещё рано лезть
импорт просто делайте и используйте qt_imageFromVideoFrame И, кстати, никаких особых проблем на андроиде сейчас нет. Несколько лет назад когда они только запустили мобильную версию их было действительно много, до сих пор в коде периодически костыли вылавливаю и заменяю нормальным кодом. А с новым проектом никаких особых проблем не должно возникать
ну у меня была проблема с перебросом каскадов хаара в андроид, это обычный xml файл, в студии я мог бы в ресурсы поместить и потом просто достать в рантайме, а тут пришлось искать writable location и в итоге они сохраняются не в папку с проектом а в downloads и оттуда запускаются, ну и + рекламу если нужно встроить в приложение приходится костыльные либы с кучей jni брать, что тоже не очень благоприятно сказывается на размере и быстродействии приложения
ну так это не проблемы кьюта, это просто задачи которые так или иначе всё равно пришлось бы решать. А если файл неизменяемый, то поместить его в ресурсы не проблема. Другое дело, что какая-то стороняя библиотека из ресурсов читать не сможет - ну так это проблема библиотеки. В общем это не недоработки команды кьюта
а можете пожалуйста сказать что именно нужно импортнуть? я просто extern функции добавил оно ругается "storage class specified for a member declaration"
Обсуждают сегодня