Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программка для видео наблюдения

8.1K
02 сентября 2005 года
cupec
33 / / 26.06.2005
Привет всем!
Хочу написать программу для видео наблюдения за своим двором.
У меня есть веб камера (конечно качество снимков оставляет желать лучшего) и я хочу ее как ни будь задействовать. Функции у программы очень простые: снимать и фиксировать отдельные снимки (делать скриншоты). Интерфейс программы предельно прост: слева набор снимков, которые можно прокручивать (по вертикали), в центре большое окно для вывода видео, а под ним кнопка для фиксации отдельных снимков, при нажатии на которую делается скриншот и добавляется в набор снимков слева.

Вопрос следующий:
1) как сделать прокручивающийся диалог с набором снимков, при этом должна быть возможность выбора отдельного снимка.
2) Как сделать захват с веб камеры? (такой же (или похожий) как в MovieMaker )
3) Как лучше хранить сделанные снимки, просто в открытом виде на диске или их можно как то в базу данных засунуть (ну например если я буду снимать людей, чтобы можно было дать им описание, а потом по названию или описанию конкретного человека вызывалась его фотка).

Вот в принципе и все, может, кто ни будь, знает где можно почить на данную тематику?
Заранее всем спасибо!
533
02 сентября 2005 года
Visualex
254 / / 07.01.2005
Цитата:
Originally posted by cupec
Привет всем!
Хочу написать программу для видео наблюдения за своим двором.
У меня есть веб камера (конечно качество снимков оставляет желать лучшего) и я хочу ее как ни будь задействовать. Функции у программы очень простые: снимать и фиксировать отдельные снимки (делать скриншоты). Интерфейс программы предельно прост: слева набор снимков, которые можно прокручивать (по вертикали), в центре большое окно для вывода видео, а под ним кнопка для фиксации отдельных снимков, при нажатии на которую делается скриншот и добавляется в набор снимков слева.

Вопрос следующий:
1) как сделать прокручивающийся диалог с набором снимков, при этом должна быть возможность выбора отдельного снимка.
2) Как сделать захват с веб камеры? (такой же (или похожий) как в MovieMaker )
3) Как лучше хранить сделанные снимки, просто в открытом виде на диске или их можно как то в базу данных засунуть (ну например если я буду снимать людей, чтобы можно было дать им описание, а потом по названию или описанию конкретного человека вызывалась его фотка).

Вот в принципе и все, может, кто ни будь, знает где можно почить на данную тематику?
Заранее всем спасибо!


Список со снимками, думаю должен иметь формат .html, может кто занимался таким форматом подскажет...

299
02 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Visualex
Список со снимками, думаю должен иметь формат .html, может кто занимался таким форматом подскажет...


Ага=))))))))))))):D :D :D :D :D
Прям в точку.

8.1K
03 сентября 2005 года
cupec
33 / / 26.06.2005
Цитата:
Originally posted by Visualex
Список со снимками, думаю должен иметь формат .html, может кто занимался таким форматом подскажет...



да, согласен, HTML тоже можно и очень даже просто, но мне хотелось бы разобраться с прокруткой диалога и элементов управления на нем, может когда ни будь пригодится

8.1K
03 сентября 2005 года
cupec
33 / / 26.06.2005
неужели никто не знает как сделать чтобы диалог прокручивался?:{ или как захватить видео? (неверняка есть компонент который на диалог вешается, а потом GetVideo(), StopVideo(), SnapShot() и т.д.)
533
06 сентября 2005 года
Visualex
254 / / 07.01.2005
Цитата:
Originally posted by cupec
да, согласен, HTML тоже можно и очень даже просто, но мне хотелось бы разобраться с прокруткой диалога и элементов управления на нем, может когда ни будь пригодится



...Вот ...Начиналось нужна програмка для видеонаблюдения......
А теперь хотелось бы разобраться....
Если нужна то делай разбирайся ищи информацию по теме, а если рабоюраться с прокруткой диалога да заодним программирование подтянуть выучить нормально язык С++, освоить среду Visual Studio, научиться пограммировать для сетевых протоколов.... ты так 10 лет будешь енту программу писать. Good luck!

4
06 сентября 2005 года
mike
3.7K / / 01.10.2002
Цитата:
Originally posted by cupec
1) как сделать прокручивающийся диалог с набором снимков, при этом должна быть возможность выбора отдельного снимка.



Оно надо ?? Правильно разложенные снимки по каталогам с датами - проще и удобнее

Цитата:

2) Как сделать захват с веб камеры? (такой же (или похожий) как в MovieMaker )



Зачем ?? Делай Photo Capture каждые 3 секунды например, этого вполне достаточно для наблюдения.
Я так делал на http://bike.novsu.ac.ru/

Код:
char szDeviceName[80];
char szDeviceVersion[80];
int cameranum=0;

hCapWnd=capCreateCaptureWindow("My Capture Window",
                               WS_CHILD|WS_VISIBLE,0,0,640,480,
                               Form1->Handle, cameranum);

bool result=capDriverConnect(hCapWnd,1);
if (!result) {ShowMessage("Can not connect to video device");}

BITMAPINFO binfo;
capGetVideoFormat(hCapWnd,&binfo,sizeof(BITMAPINFO));
binfo.bmiHeader.biWidth=640;
binfo.bmiHeader.biHeight=480;
capSetVideoFormat(hCapWnd,&binfo,sizeof(BITMAPINFO));

CAPTUREPARMS CapParams;
capCaptureGetSetup(hCapWnd,&CapParams,sizeof(CapParams));
CapParams.fStepCaptureAt2x=true;
capCaptureSetSetup(hCapWnd,&CapParams,sizeof(CapParams));

capGrabFrame(hCapWnd);
capFileSaveDIB(hCapWnd,imagename.c_str());

capDriverDisconnect(hCapWnd);
DestroyWindow(hCapWnd);


Цитата:

3) Как лучше хранить сделанные снимки, просто в открытом виде на диске или их можно как то в базу данных засунуть (ну например если я буду снимать людей, чтобы можно было дать им описание, а потом по названию или описанию конкретного человека вызывалась его фотка).



Странный у тебя двор. Я бы хранил так:

C:\root\dir\photos\2005\09\06\11\2005-09-06 11:23:12.jpg

Очень удобно. Нужный кадр можно быстро найти с помощью любой ACDSee и т.п.

8.1K
07 сентября 2005 года
cupec
33 / / 26.06.2005
Цитата:
Originally posted by mike
Оно надо ?? Правильно разложенные снимки по каталогам с датами - проще и удобнее



Зачем ?? Делай Photo Capture каждые 3 секунды например, этого вполне достаточно для наблюдения.
Я так делал на http://bike.novsu.ac.ru/

Код:
char szDeviceName[80];
char szDeviceVersion[80];
int cameranum=0;

hCapWnd=capCreateCaptureWindow("My Capture Window",
                               WS_CHILD|WS_VISIBLE,0,0,640,480,
                               Form1->Handle, cameranum);

bool result=capDriverConnect(hCapWnd,1);
if (!result) {ShowMessage("Can not connect to video device");}

BITMAPINFO binfo;
capGetVideoFormat(hCapWnd,&binfo,sizeof(BITMAPINFO));
binfo.bmiHeader.biWidth=640;
binfo.bmiHeader.biHeight=480;
capSetVideoFormat(hCapWnd,&binfo,sizeof(BITMAPINFO));

CAPTUREPARMS CapParams;
capCaptureGetSetup(hCapWnd,&CapParams,sizeof(CapParams));
CapParams.fStepCaptureAt2x=true;
capCaptureSetSetup(hCapWnd,&CapParams,sizeof(CapParams));

capGrabFrame(hCapWnd);
capFileSaveDIB(hCapWnd,imagename.c_str());

capDriverDisconnect(hCapWnd);
DestroyWindow(hCapWnd);




Странный у тебя двор. Я бы хранил так:

C:\root\dir\photos\2005\09\06\11\2005-09-06 11:23:12.jpg

Очень удобно. Нужный кадр можно быстро найти с помощью любой ACDSee и т.п.




Большое спасибо, щас буду разбираться, но с прокруткой ты наверно не совсем понял. Например: я вчера наснимал всех кто ко мне приходил, а сегодня запустил программу и смотрю список людей с фотками, и при желании могу любого человека выбрать щелкнув на нужной мне фотке. С помощью HTML это все делается просто, но я хотел бы это сделать с помощью диалога, который можно прокручивать для того чтобы были видны фотки которые не поместились.

533
07 сентября 2005 года
Visualex
254 / / 07.01.2005
Цитата:
Originally posted by cupec
Большое спасибо, щас буду разбираться, но с прокруткой ты наверно не совсем понял. Например: я вчера наснимал всех кто ко мне приходил, а сегодня запустил программу и смотрю список людей с фотками, и при желании могу любого человека выбрать щелкнув на нужной мне фотке. С помощью HTML это все делается просто, но я хотел бы это сделать с помощью диалога, который можно прокручивать для того чтобы были видны фотки которые не поместились.


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

991
07 сентября 2005 года
Zenhipster
157 / / 14.01.2005
Видеозахват можно сделать с помощью DirectShow.

А может кто знает, как в MDI приложении открыть несколько окон, и чтоб в каждом была картинка с камеры в реалтайме? Причем в одном окне - оригинал, а в остальных - картинки обработанные разными фильтрами. Знаю только что надо это все мутить через ФильтрГраф, а как замутить - непонятно. Ктонить работал тут с DirectShow?
8.1K
08 сентября 2005 года
cupec
33 / / 26.06.2005
Цитата:
Originally posted by Zenhipster
Видеозахват можно сделать с помощью DirectShow.

А может кто знает, как в MDI приложении открыть несколько окон, и чтоб в каждом была картинка с камеры в реалтайме? Причем в одном окне - оригинал, а в остальных - картинки обработанные разными фильтрами. Знаю только что надо это все мутить через ФильтрГраф, а как замутить - непонятно. Ктонить работал тут с DirectShow?



в MSDN все есть, я нашел пример, все реально работает, называется VideoCapture

8.1K
10 сентября 2005 года
cupec
33 / / 26.06.2005
Если кому интересно вот как я реализовал (вернее в примере реализован) видео захват:

BOOL CVideoCapDlg::OnInitDialog()
{
CDialog::OnInitDialog();

HWND ghWndCap ;

ghWndCap = capCreateCaptureWindow((LPTSTR)TEXT("Capture Window"),
WS_CHILD | WS_VISIBLE,
0, 0, 160, 120,
this->m_hWnd, (int) 0) ;

capDriverConnect(ghWndCap, 0);
StartNewVideoChannel(ghWndCap, 0);
// второй параметр у этих 2х функций номер драйвера видеокамеры, поэтому если их две //необходимо сделать перебор.

return TRUE;
}


void CVideoCapDlg::StartNewVideoChannel(HWND hWndC, WORD wIndex)
{
////////////////////////////////////////////////////////////////////////
// hWndC: Capture window handle
// wIndex: Selected capture driver index
////////////////////////////////////////////////////////////////////////

#define MS_FOR_15FPS 66


CAPSTATUS gCapStatus ;
CAPDRIVERCAPS gCapDriverCaps ;

// Get capture driver settings and update menu
capDriverGetCaps(hWndC, &gCapDriverCaps, sizeof(CAPDRIVERCAPS)) ;

// Get video format and adjust capture window
capGetStatus(hWndC, &gCapStatus, sizeof(CAPSTATUS)) ;
::SetWindowPos(hWndC, NULL, 0, 0, gCapStatus.uiImageWidth,
gCapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE) ;

// Start preview by default
capPreviewRate(hWndC, MS_FOR_15FPS) ;
capPreview(hWndC, TRUE) ;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог