Форум программистов, компьютерный форум, киберфорум
C++: OpenCV
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/26: Рейтинг темы: голосов - 26, средняя оценка - 4.62
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474

Слежение за объектом с помощью USB камеры

12.08.2024, 15:17. Показов 11359. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день товарищи.

Странные дела с OpenCV иногда случаются. Много что делал с этими библиотеками, все нормально. А тут вот какой затык:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
int CameraNomber = ui->ComboBox_CameraIndexes->currentText().toInt();
        VCapture.open(CameraNomber, cv::CAP_V4L2);
 
        // Set all the parameters
 
        VCapture.set(cv::CAP_PROP_FOURCC, 0x47504A4D);
        VCapture.set(cv::CAP_PROP_FPS, 30.0);
        qWarning () << " R E S O L U T I O N:  " << Cols << " " << Rows;
        VCapture.set(cv::CAP_PROP_FRAME_WIDTH, Cols);
        VCapture.set(cv::CAP_PROP_FRAME_HEIGHT, Rows);
 
        // End of Set all the parameters
 
        cv::Mat Frame;
        cv::Rect rect_KCF = cv::Rect(10, 20, 30, 40);
        cv::Rect rect_GOTURN = cv::Rect(10, 20, 30, 40);
        if (VCapture.isOpened())
        {
             qWarning () << "* * * REPORT_FROM_MAIN_FUNCTIONS: Resolution of frame: " << VCapture.get(cv::CAP_PROP_FRAME_WIDTH) << " " << VCapture.get(cv::CAP_PROP_FRAME_HEIGHT);
            VCapture >> Frame;
            qWarning () << "* * * REPORT_FROM_MAIN_FUNCTIONS: Camera connected succesfully";
 
            //cv::Rect trackingBox = cv::selectROI(Frame, false);
            Tracker_GOTURN->init(Frame, rect_GOTURN);
            Tracker_KCF->init(Frame, rect_KCF );
            cv::Mat Frame_Resized;
            int Label_Width, Label_Height;
            Label_Width = ui->Label_Camera_Result->width();
            Label_Height = ui->Label_Camera_Result->height();;
 
            if (!Frame.empty())
            {
                while (1)
                {
 
                    Tracker_GOTURN->update(Frame, rect_GOTURN);
                    cv::rectangle( Frame, rect_GOTURN, cv::Scalar( 255, 0, 0 ), 2, 1 );
                    Tracker_KCF->update(Frame, rect_KCF);
                    cv::rectangle( Frame, rect_GOTURN, cv::Scalar( 0, 0, 255 ), 2, 1 );
                    qWarning() << "Frame size is " << Frame.cols << " " << Frame.rows;
                    cv::resize(Frame, Frame_Resized, cv::Size(Label_Width, Label_Height), cv::INTER_LINEAR);
 
                    ui->Label_Camera_Result->setPixmap(ASM::cvMatToQPixmap(Frame_Resized));
                    ui->Label_CameraAlgorithms->setPixmap(ASM::cvMatToQPixmap(Frame));
                }
 
            }
 
        }
Так вот, товарищи, какого-то лешего е инициализируется

C++ (Qt)
1
2
Tracker_GOTURN = cv::TrackerGOTURN::create();
    Tracker_KCF = cv::TrackerKCF::create();
Bash
1
:-1: error: mainfunctions.cpp:(.text+0x17f): undefined reference to `cv::tracking::TrackerKCF::create(cv::tracking::TrackerKCF::Params const&)'
А как только убираю KCf то Goturn запускается, но видео не вводится никуда никакое.
Странно, вроде все согласно документации.

Прошу подсказать что тут не так

Добавлено через 1 минуту
Вообще это чтобы сравнить эти следилки - что быстрее и точнее. Поставлю потом это на распберри и пусть за котами робот на его базе ездит.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.08.2024, 15:17
Ответы с готовыми решениями:

Слежение за объектом
Здравствуйте. Помогите с задачей: идет видео с камеры. Нажимая на кнопку &quot;stop&quot; на данном кадре выделяются границы объектов. Нажимая на...

Слежение за объектом
Доброго времени суток. У меня вот такая проблема. Есть два объекта, hero и enemy, второй должен следовать за первым. Я уже попробовал по...

Слежение за объектом
Дорогие форумчане! Очень прошу вашей помощи. Поделитесь или сделайте del] программу, которая на видео файле детектирует объекты. Алгоритм...

5
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
13.08.2024, 09:04  [ТС]
Товарищи, проблема была решена.
1. Вот это
C++ (Qt)
1
VCapture.set(cv::CAP_PROP_FOURCC, 0x47504A4D);
Не надо.
2.
C++ (Qt)
1
2
3
4
connect(Timer, SIGNAL(timeout()), this, SLOT(UpdateWindow()));
            VCapture >> Frame;
            cv::Rect trackingBox = cv::selectROI(Frame, false);
            Timer->start(17);
А все остальное сделал в функции UpdateWindow, Где разумеется еще раз беру картинку из видео
0
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
13.08.2024, 18:32  [ТС]
Товарищи, А вот kcf се равно не работает, блин.
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
28
29
30
31
32
33
34
35
36
37
38
VCapture >> Frame;
 
    Tracker_GOTURN->init(Frame, rect_GOTURN);
    Tracker_KCF->init(Frame, rect_KCF);
    ui->Label_Blureness_Value->setText(QString::number(MainFunctions::LaplacianBlur(Frame)));
 
    if (!Frame.empty())
    {
 
        //timer to measure fps
        double timer = (double)cv::getTickCount();
 
        cv::Mat FrameForTrackingOfObject;
        FrameForTrackingOfObject = Frame.clone();
 
        bool Ok = true;
        try
        {
            Tracker_KCF->update(FrameForTrackingOfObject, rect_KCF);
            Tracker_GOTURN->update(FrameForTrackingOfObject, rect_GOTURN);
        }
        catch (std::exception &err)
        {
            qWarning() << "WARNING_FROM_MAIN_FUNCTIONS: Error of object tracking " << err.what();
            Ok = false;
        }
        float fps = 0.0;
        if (Ok)
        {
            // Calculate Frames per second (FPS)
            fps = cv::getTickFrequency() / ((double)cv::getTickCount() - timer);
            ui->Label_FPS_Value->setText(QString::number(fps));
            cv::rectangle( FrameForTrackingOfObject, rect_GOTURN, cv::Scalar( 255, 0, 0 ), 2, 1 );
            cv::rectangle( FrameForTrackingOfObject, rect_KCF, cv::Scalar( 0, 0, 255 ), 2, 1 );
 
        }
        else
        {
Bash
1
opencv-4.10.0/modules/core/src/merge.dispatch.cpp:135: error: (-215:Assertion failed) 0 < cn && cn <= CV_CN_MAX in function 'merge'
Проблема возникает вот в этом месте
C++ (Qt)
1
Tracker_KCF->update(FrameForTrackingOfObject, rect_KCF);
Если его закомментировать, то guturn работает без проблем. Кстати его точность мне не особо нравится. Думаю kcf оточнее будет.
Подскажите в чем проблема
Спасибо
0
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
15.08.2024, 10:57  [ТС]
Какая-то дичь. Сделал то же самое для трекера CSRT, так эта фигня не обновляет положения рамки почему-то

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
void MainFunctions::UpdateWindow()
{
    VCapture >> Frame;
 
    Tracker_GOTURN->init(Frame, rect_GOTURN);
    Tracker_KCF->init(Frame, rect_KCF);
    Tracker_CSRT->init(Frame, rect_CSRT);
    
    ui->Label_Blureness_Value->setText(QString::number(MainFunctions::LaplacianBlur(Frame)));
 
    if (!Frame.empty())
    {
 
        //timer to measure fps
        double timer = (double)cv::getTickCount();
 
        cv::Mat FrameForTrackingOfObject;
        FrameForTrackingOfObject = Frame.clone();
 
        bool Ok = true;
        try
        {
            //Tracker_KCF->update(FrameForTrackingOfObject, rect_KCF);
            Tracker_CSRT->update(FrameForTrackingOfObject, rect_CSRT);
            Tracker_GOTURN->update(FrameForTrackingOfObject, rect_GOTURN);
        }
        catch (std::exception &err)
        {
            qWarning() << "WARNING_FROM_MAIN_FUNCTIONS: Error of object tracking " << err.what();
            Ok = false;
        }
        float fps = 0.0;
        if (Ok)
        {
            // Calculate Frames per second (FPS)
            fps = cv::getTickFrequency() / ((double)cv::getTickCount() - timer);
            ui->Label_FPS_Value->setText(QString::number(fps));
            cv::rectangle( FrameForTrackingOfObject, rect_CSRT, cv::Scalar( 255, 0, 0 ), 2, 1 );
            cv::rectangle( FrameForTrackingOfObject, rect_GOTURN, cv::Scalar( 0, 0, 255 ), 2, 1 );
 
        }
        else
Функция вызывается по таймеру раз в 17 мс
0
 Аватар для Наталья8
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,880
18.08.2024, 02:58
Глубоко копаешь.
Возможно версию opencv попробовать поменять.
В версиях возможны некоторые глюки...
Возможно ку те поменять на визуаль студио.
Вообщем так себе. Примерно.
Или самому поподробнее это отслеживание написать.
0
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 474
22.08.2024, 13:44  [ТС]
Цитата Сообщение от Наталья8 Посмотреть сообщение
В версиях возможны некоторые глюки...
Я вот к этой идее склоняюсь, Пока временно отказался от отслеживания непрерывного. сделал комбинацию между удалением фона - детектор движения и goturn Не очень красиво но работает. Эта часть на паузе. Блин следующая не лучше. Но ничего. Сечас или разберусь или напишу тему о использовании yolo с qt

Добавлено через 3 минуты
Да и камера Распберри не особо спешит нормально работать с opencv. Точно знаю что должна - их родная приложуха для демонстрации на Кьюте написана. Но как?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2024, 13:44
Помогаю со студенческими работами здесь

Автоматическое слежение за объектом
Помогите, как задать GPIO pin в этой программе: import serial import sys MODE_256 = 0 MODE_QUARTER = 1 def clamp( val,...

Слежение за объектом и распознание маркеров
Приветствую вас, товарищи форумчане. нужна ваша помощь. есть программа(см. вложение.). 1.нужно получить координаты точек расставляемых...

Слежение за объектом на видео. Emgu CV
Здравствуйте! Подскажите пожалуйста учебный материал или любую другую полезную информацию в этом направлении. Есть необходимость в...

слежение за объектом по видеоизображению. имитация перемещения объекта
Нахождение объекта представленного в виде окружности, слежение за его перемещением,в чём ошибка? #include&lt;graphics.h&gt; ...

Слежение камеры за персом
Пишу 2D платформер на юнити, хотел сделать слежение камеры за персом, в итоге юнити ругается на Hero в конце в FindObjectType. Когда меняю...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru