#include <vfw.h>
#include <Windows.h>
//Если планируется работа с клипбордом
#include <Clipbrd.hpp>
Программная работа с веб-камерой.
здесь.
С ним пока не разбирался.
Для того что бы реализовать работу с камерой первым способом необходимо подключить в проект соответственно две библиотеки - vfw32.lib, winmm.lib - $(BCB)\lib\PSDK.
Следующим шагом - надо включить заголовочные файлы:
После этого пишем инициализацию камеры (для простоты я в примере посто повесил ее на кнопку назвал ее Запись)
hWndC - переменная объявленная в данном случае в закрытой части класа формы, так как использовать ее прийдется по всему классу. Параметры функции
capCreateCaptureWindow - смотреть понятно где :).
Таймер здесь нужен в том случае если вы хотите получить видеоизображение - правда надо сказать борландовский таймер для этого негодится и здесь используется только ради примера, слишком не точен и при его использовании изображение изрядно тормозит.
В функцию таймера пишем типа такого:
В обрабочик кнопки Прекратить пишем:
Вот в принципе и все. В результате в Image1 после нажатия первой кнопки у вас будет выводится изображение с камеры до тех пор пока вы не нажмете вторую.
Естественно это далеко не все что можно делать - но здесь, как говорится МСДН вам в руки и попутный ветер в ... спину. Удачи.
Задумал прикрутить в свой программный комплекс возможность работы с веб-камерой. Задумка проста - использовать камеру в качестве банального фотоаппарата - кликнул по кнопке - получил фото - кликнул по второй - сохранил в базу. Ничего сложного. Вариантов работы (если не рассматривать возможность написания собственного драйвера :) ) три. Первый - использование возможностей библиотеки vfw32. Вобщем то достаточно наиболее простой и на нем я пока и остановился. Вариант второй - работа через DirectX - особо не разбирался, возможно штука неплохая, но для моих задач пока не нужна, если кому приходилось работать - черкните примерчик :). И третий вариант - работа через TWAIN - пример использования можно найти
С ним пока не разбирался.
Для того что бы реализовать работу с камерой первым способом необходимо подключить в проект соответственно две библиотеки - vfw32.lib, winmm.lib - $(BCB)\lib\PSDK.
Следующим шагом - надо включить заголовочные файлы:
Код:
После этого пишем инициализацию камеры (для простоты я в примере посто повесил ее на кнопку назвал ее Запись)
Код:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
hWndC = capCreateCaptureWindow ( "",
WS_CHILD,
this->Left, this->Top,
this->Width, this->Height,
this->Handle, 11011);
capDriverConnect (hWndC, 0);
Timer1->Enabled = true;
}
{
hWndC = capCreateCaptureWindow ( "",
WS_CHILD,
this->Left, this->Top,
this->Width, this->Height,
this->Handle, 11011);
capDriverConnect (hWndC, 0);
Timer1->Enabled = true;
}
hWndC - переменная объявленная в данном случае в закрытой части класа формы, так как использовать ее прийдется по всему классу. Параметры функции
capCreateCaptureWindow - смотреть понятно где :).
Таймер здесь нужен в том случае если вы хотите получить видеоизображение - правда надо сказать борландовский таймер для этого негодится и здесь используется только ради примера, слишком не точен и при его использовании изображение изрядно тормозит.
В функцию таймера пишем типа такого:
Код:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
capGrabFrame(hWndC);
if(capEditCopy(hWndC))
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP, pCB->GetAsHandle(CF_BITMAP), 0);
}
{
capGrabFrame(hWndC);
if(capEditCopy(hWndC))
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP, pCB->GetAsHandle(CF_BITMAP), 0);
}
В обрабочик кнопки Прекратить пишем:
Код:
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
capDriverDisconnect(hWndC);
}
{
capDriverDisconnect(hWndC);
}
Вот в принципе и все. В результате в Image1 после нажатия первой кнопки у вас будет выводится изображение с камеры до тех пор пока вы не нажмете вторую.
Естественно это далеко не все что можно делать - но здесь, как говорится МСДН вам в руки и попутный ветер в ... спину. Удачи.
[C++ Error] Unit1.cpp(25): E2451 Undefined symbol 'hWndC'
[C++ Error] Unit1.cpp(38): E2451 Undefined symbol 'hWndC'
[C++ Error] Unit1.cpp(43): E2451 Undefined symbol 'hWndC'
[C++ Error] Unit1.cpp(45): E2451 Undefined symbol 'pCB'
[quote="kot_"]
hWndC - переменная объявленная в данном случае в закрытой части класа формы, так как использовать ее прийдется по всему классу. Параметры функции
[/quote]
читаем внимательнее!
ЗЫ: по поводу второй переменной - почитай справку по LoadFromClipboardFormat и посмотри, что должно быть вторым параметром.
Не могу разобраться как прописывать hWndC... Фиговые видимо у меня "знания основ". А вместо pCB в другом примере Clipboard() написано.
сделай hWndC членом класса твоей формы.
Цитата:
сделай hWndC членом класса твоей формы.
Спасибо, вроде разобрался, прописал вот так:
Код:
TForm1 *Form1;
HWND hWndC;
HWND hWndC;
Заработало, правда полного понимания того что я собственно сделал не пришло :) .
Цитата:
Таймер здесь нужен в том случае если вы хотите получить видеоизображение - правда надо сказать борландовский таймер для этого негодится и здесь используется только ради примера, слишком не точен и при его использовании изображение изрядно тормозит.
А что можно использовать вместо таймера? А то действительно приглючивает.
ты объявил глобально для всего модуля переменную hWndC
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP, pCB->GetAsHandle(CF_BITMAP), 0);
Следующая ошибка:
[C++ Error] Unit1.cpp(42): E2288 Pointer to structure required on left side of -> or ->*
Вопрос: как ее устранить?
Цитата: Foxl
В строке:
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP, pCB->GetAsHandle(CF_BITMAP), 0);
Следующая ошибка:
[C++ Error] Unit1.cpp(42): E2288 Pointer to structure required on left side of -> or ->*
Вопрос: как ее устранить?
Image1->Picture->LoadFromClipboardFormat(CF_BITMAP, pCB->GetAsHandle(CF_BITMAP), 0);
Следующая ошибка:
[C++ Error] Unit1.cpp(42): E2288 Pointer to structure required on left side of -> or ->*
Вопрос: как ее устранить?
Тебе что - трудно поднять глаза на пару сообщений выше?
Тдля кого это написано?
Цитата:
почитай справку по LoadFromClipboardFormat и посмотри, что должно быть вторым параметром.
Наверно ведь для таких как ты?
Или ты считаешь что спустя 3 года и семь дней я кинусь смотреть, указатель на что это было и зачем он там?
Прошу прощения!