0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 8

Как занести видео поток (OpenCV) в виджет?

16.10.2017, 14:33. Показов 4602. Ответов 8

Студворк — интернет-сервис помощи студентам
Понадобилось в срочном порядке допилить интерфейс для программы, суть ее в том, что она распознает изображения с веб камеры, но это не так важно.
В опред. момент мы открываем вебку:

C++ (Qt)
1
VideoCapture cap(0);
как я понял из комментариев другого разработчика (моя часть только интерфейс) именно это открывает отдельное окно с видео потоком с вебки. Так вот вопрос, как мне встроить это видео в окно проекта Qt.

Очень много гуглил, но так как с QT работаю впервые, а времени пару дней, (и уже потрачено пару на поиски реализации) решил попросить Вашей помощи. На найденных мною ответах (не совсем совпадало) либо не получалось, либо я мог понять что сделать, в виду языкового барьера и отсутствия соответствующих знаний (только начал работать с ООП в принципе).

Если нужны какие-то исходники- без проблем.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2017, 14:33
Ответы с готовыми решениями:

Поток вывода в виджет
Есть программка с tkinter. Скриншоты прилагаются. При нажатии одной из кнопок стартует "игра". Простой диалог где делается...

Не получается занести содержимое List в поток
Не получается занести содержимое List в поток Stream1. В Memo1 ничего не происходит(( procedure TForm1.Button5Click(Sender: TObject); ...

Как можно взять поток видео с обычной веб камеры
добрый вечер, У меня такой вопросик. Как можно взять поток видео с обычной веб камеры? Ясен красен что это пишется на уровне драйверов....

8
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
16.10.2017, 17:26
VideoCapture просто считывает данные с камеры. А дальше извлекай кадры и выводи.
0
Заблокирован
16.10.2017, 17:31
Сейчас тебе пример накидаю, погоди немного
0
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 8
16.10.2017, 18:21  [ТС]
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int Camera()
{
    int c;
    VideoCapture cap(0); // opens default webcam
 
    /*/if (!cap.isOpened())
    {
        break;
    }*/
 
    Mat frame;
    vector<vector<Point> > squares;
    for (;;)
    {
        cap >> frame;
        if (frame.empty())
        {
            break;
        }
        findSquares(frame, squares);
        drawSquares(frame, squares);
        imshow("Detection", frame);
        c = waitKey(33);
        if (c == 27)
            return 0;
    }
}
Это весь код этой функции
0
Заблокирован
16.10.2017, 18:50
Оййй хотел по быстрому накидать, накидал, но что-то твой OpenCL контуры не распознаёт, ну и хрен с ним Ты уж сам там со своим CV-шником разберись, почему контуры не видно... Сто лет это барахло не использовал, забыл уже всё
Там во вложениях архив из 3-х фалов, это проект целиком. Весит много, т.к. там папка с OpenCV внутри.
Вся обработка видео идёт тут
C++ (Qt)
1
QVideoFrame VideoFilterRunnable::run(QVideoFrame *input, const QVideoSurfaceFormat &surfaceFormat, QVideoFilterRunnable::RunFlags flags)
Вложения
Тип файла: rar OpenCVDemo.part01.rar (9.00 Мб, 37 просмотров)
Тип файла: rar OpenCVDemo.part02.rar (9.00 Мб, 31 просмотров)
Тип файла: rar OpenCVDemo.part03.rar (5.88 Мб, 29 просмотров)
1
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 8
16.10.2017, 18:57  [ТС]
newbie_1, ого, здорово, посмотрю.
Спасибо большое.

И еще вопрос совсем не связанный.
Есть QList allQFrame
QList<QFrame *> allQFrame = this->findChildren<QFrame *>();
Как мне его отсортировать по названию фреймов? Они называются frame000, frame 001 и т.д.
0
Заблокирован
16.10.2017, 19:15
Цитата Сообщение от kemosab Посмотреть сообщение
И еще вопрос совсем не связанный.
Есть QList allQFrame
Хмм... Ну вообще наверное я тебя огорчу, тот проект, что я тебе кинул, на QML, я уж давно не пишу ничего на виджетах, т.к. QML намного функциональней.
А что до QFrame... А там разве где-то название ему можно задать? Какой функцией ты можешь узнать название QFrame? accessibleName?
0
0 / 0 / 0
Регистрация: 15.10.2017
Сообщений: 8
16.10.2017, 19:17  [ТС]
newbie_1, название самого frame в режиме дизайнера.
https://pp.userapi.com/c841324... YotMmQ.jpg
как то так
0
Заблокирован
16.10.2017, 19:32
Цитата Сообщение от kemosab Посмотреть сообщение
название самого frame в режиме дизайнера.
По названию, то есть алфавитная сортировка, будет выглядеть как-то так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <QList>
#include <QString>
#include <QDebug>
#include <algorithm>
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    QList<QFrame*> allQFrame = this->findChildren<QFrame*>();
    std::sort(allQFrame.begin(), allQFrame.end(), [] (const QFrame* a , const QFrame* b) { return a->objectName() < b->objectName(); });
 
    //Test
    for(auto& it : allQFrame)
        qDebug() << it->objectName();
В принципе можно отрезать от названия последние буковки, перевести их в цифры и по ним отсортировать...Всё зависит от того, какую цель ты преследуешь.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.10.2017, 19:32
Помогаю со студенческими работами здесь

Как запустить RTMP видео поток на сайте без flash?
Как запустить RTMP видео поток на сайте без flash? Потому как браузеры его блокируют, и для рядового пользователя его запуск, большая...

Вывод видео на виджет
Суть проблемы: имеется некоторая камера подключенная по USB. В системе определяется как &quot;Устройство обработки изображения&quot;. ...

Виджет превьюшка видео
День добрый! Мне нужно сделать полосу с выскакивающей превьюшкой (а-ля как на ютубе). Прогресс проигранного видео показывать не...

Работа с видео потоком opencv c++
Приветствую, необходима помощь, есть программа, фрагменты взяты из официальной документации opencv. Необходимо на видео потоке найти и...

Qt + OpenCv видео в разных потоках
Здравствуйте, пытаюсь написать на qt програмку: в потоке открывается окно с помощью opencv и отображается видео, но я столкнулся с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru