Консультация № 161913
03.03.2009, 15:56
0.00 руб.
0 1 1
Подскажите пожалуйста как сделать чтобы изображение с веб-камеры передавалось на компонент TImage

Заранее благодарю.

Обсуждение

Неизвестный
05.03.2009, 09:36
общий
это ответ
Здравствуйте, Писарев Павел Юрьевич!

Копайте в сторону DirectShow. Directshow.wonderu.com В приложении код использующий компоненты пакета DSPack TFilterGraph, TFilter.
Удачи.

Приложение:
//Создаем список видеоустройств
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
VideoDevice:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
if VideoDevice.CountFilters > 0 then
for i := 0 to VideoDevice.CountFilters - 1 do
ComboBox1.Items.Add(VideoDevice.Filters[i].FriendlyName);
end;

//Выбираем устройство
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
FilterGraph.ClearGraph;
FilterGraph.Active := false;
//ЗАдаем устройство с которым будем работать
Filter1.BaseFilter.Moniker := VideoDevice.GetMoniker(ComboBox1.ItemIndex);
FilterGraph.Active := true;
//Задаем что откуда будем получать и куда выводить
with FilterGraph as ICaptureGraphBuilder2 do
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter1 as IBaseFilter, SampleGrabber1 as IBaseFilter, VideoWindow1 as IbaseFilter);
//Производим вывод изображения
FilterGraph.Play;
end;

//Помещаем изображение на Image1
procedure TForm1.Button1Click(Sender: TObject);
begin
SampleGrabber1.GetBitmap(Image1.Picture.Bitmap);
end;
Форма ответа