Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
denistrannik
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 27
#1

Выделение контуров объекта, который задержался в кадре на 10 секунд - C++

05.11.2015, 10:21. Просмотров 164. Ответов 0
Метки нет (Все метки)

здравствуйте!я устал шарить по интернету, посмотрел, тут вроде всем помогают очень хорошо! вообщем есть код! запускаем, жмём на энтер для того чтобы запомнился фон! потом инородные объекты программа выделяет синим цветом! вообщем любые изменения по сравнению с фоном программа показывает синим цветом!и вот мне нужно чтобы предмет который задержался в кадре на 10 секунд к примеру выделять контуром(прямоугольником). ну и дальше думаю сделать чтобы сохранялся кадр в папку с подписью.
C++
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char** argv)
{
    //Необходимо подключить камеру
CvCapture* capture = 0;
capture = cvCaptureFromCAM(0);
if (!capture) return 1;
cvNamedWindow( "Motion", 1 );
IplImage* image;
CvScalar color;
CvPoint cv1;
CvFont font;
cvInitFont( &font, CV_FONT_HERSHEY_SIMPLEX, 1.3f,1.3f,0,1, 8 );
cv1.x=70; cv1.y=120;
color = CV_RGB(24,0,24);
int i,j;
for(;;)
{
IplImage* image1;
if( !cvGrabFrame( capture ))
break;
image1 = cvRetrieveFrame( capture );
 
cvPutText( image1, "Press, when you ready", cv1, &font, color );
 
cvShowImage( "Motion", image1);
if( cvWaitKey(10) >= 0 ) break;
}
 
//обучаем фон
image = cvRetrieveFrame( capture );
cvShowImage( "Motion", image);
 
 
//Теперь надо посчитать m для каждых
float *m=new float[image->height*image->width*3];
int j1;
uchar* ptr;
for(i=0;i<image->height;i++)
{
    for(j=0;j<image->width;j++)
    {
        for(j1=0;j1<3;j1++)
        {
            m[(i*image->width+j)*3+j1]=0;                
            ptr = (uchar*) (image->imageData);
            m[(i*image->width+j)*3+j1]+=ptr[j*3+i*image->widthStep+j1];                
            m[(i*image->width+j)*3+j1]=m[(i*image->width+j)*3+j1]/1;
        }
    }
}
//Раз запомнили - можно входить в цикл обработки изображений
float porog=60.0;
float k=0;
for(;;)
 {
    IplImage* image1;
    if( !cvGrabFrame( capture ))
    break;
    image1 = cvRetrieveFrame( capture );
    ptr = (uchar*) (image1->imageData);
    for(i=0;i<image->height;i++)
    {
        for(j=0;j<image->width;j++)
        {
            k=0;
                for(j1=0;j1<3;j1++)
                k+=abs(m[(i*image1->width+j)*3+j1]-ptr[j*3+i*image1->widthStep+j1]);
            if (k>=porog)
            {
                for(j1=0;j1<3;j1++)
                {
                    if (j1==0) ptr[j*3+i*image1->widthStep+j1]=255;
                    else ptr[j*3+i*image1->widthStep+j1]=100;
                }
            }
        }
    }
    cvShowImage( "Motion", image1);
    if( cvWaitKey(10) >= 0 ) break;
 }
//Удаляем все
cvReleaseCapture( &capture );
cvDestroyWindow( "Motion" );
delete m;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2015, 10:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение контуров объекта, который задержался в кадре на 10 секунд (C++):

Видимость объекта на определенном кадре - ActionScript
нужно сделать так, чтобы в зависимости от варианта показывалась картинка, но картинка установлена не на первом кадре (предположим на 90), в...

Выделение контуров изображения - Программирование Android
Добрый день, подскажите пожалуйста, как на андроиде реализовать выделение контуров изображения? Есть ли готовые реализации для обработки...

Выделение контуров на основе дескрипторов Фурье - Matlab
Доброго времени суток! Требуется ваша помощь, уже имеется кусок программы в котором благополучно выделяется контур. % global bin_img ...

Выделение контуров на изображении градиентным методом - C#
Программа должна брать исходный файлик с изображением и выделять контуры на изображении градиентным методом. Не нужно писать всю программу,...

Выделение контуров на изображении градиентным методом - C#
Программа должна брать исходный файл с изображением и выделять контуры на изображении градиентным методом.Помогите написать программу(ну...

Парсинг динамического контента (который загружается спустя ~5 секунд) - PHP Сети
Всем привет, нужен парсер, который парсит динамический контент. Я имею в виду сайты, на которых основной контент выводится спустя 3-5...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2015, 10:21
Привет! Вот еще темы с ответами:

Эллипс, который увеличивается в размерах, а по прошествии 30 секунд - уменьшается - Visual C++
Написать программу :эллипс, который увеличивается в размерах а по прошествии 30 секунд уменьшается Добавлено через 10 часов 12 минут ...

Выделение объекта - C#
Всем привет, решил попробовать написать программу, которая выделяет объект рамкой. Однако у меня возникла проблема с нахождением первого...

Таймер, который выводит количество секунд с момента запуска программы - C (СИ)
Друзья, возможно ли реализовать таймер в С (не С++)? Я накидал вот такую простую прогу с помощью ncurses, которая выводит кол-во...

Выделение графического объекта - C#
Алоха, господа. Столкнулся с проблемой: есть фигура, скажем ромб, нарисованная с помощью метода DrawLine: (из программы) Pen myPen =...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.