ImageEn for Delphi and C++ Builder ImageEn for Delphi and C++ Builder

 

ImageEn Forum
Profile    Join    Active Topics    Forum FAQ    Search this forumSearch
Forum membership is Free!  Click Join to sign-up
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 ImageEn Library for Delphi, C++ and .Net
 ImageEn and IEvolution Support Forum
 Help! Display Webcam in ImageEnMView
 New Topic  Reply to Topic
Author Previous Topic Topic Next Topic  

Boban

Yugoslavia
41 Posts

Posted - Jul 07 2013 :  11:45:50  Show Profile  Reply
Hi!

How can I display multiple web cameras in ImageEnMView?
I want to have a review of more than a webcam, that is to have a list of web cameras that can be monitored at once.

xequte

39064 Posts

Posted - Jul 07 2013 :  13:45:51  Show Profile  Reply
Hi

That is not possible with a TImageEnMView. Why not use a TFlowPanel and add/create TImageEnViews for each active cam?

Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

xequte

39064 Posts

Posted - Jul 11 2013 :  00:53:14  Show Profile  Reply
Hi

We have created a demo to illustrate this. Please email me for a copy.



Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

Boban

Yugoslavia
41 Posts

Posted - Jul 24 2013 :  07:29:23  Show Profile  Reply
Hi Nigel

I apologize for the delayed I thought it was an older post so I looked at the answer. I understand you that it is possible to be done to monitor multiple cameras at imageenmviev and have the demo and want to send me your email. Thanks a lot. E-mail: bobans72@open.telekom.rs
Go to Top of Page

xequte

39064 Posts

Posted - Jul 28 2013 :  01:29:49  Show Profile  Reply
Hi

This has been sent.

Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

Boban

Yugoslavia
41 Posts

Posted - Jul 29 2013 :  22:14:59  Show Profile  Reply
Hi

And would it be and how selecting any webcam that is shown in TImageEnMView transfer or display TImageEnView components as well as a video ? It does not matter if it will be shown in TImageEnView or TImageEnVideoView.
Go to Top of Page

fab

1310 Posts

Posted - Aug 01 2013 :  23:34:52  Show Profile  Reply
Please look at the demo. It shows how you can select which webcam is shown in TImageEnMView.
Go to Top of Page

Boban

Yugoslavia
41 Posts

Posted - Aug 11 2013 :  02:07:29  Show Profile  Reply
Hi

To display it. But selecting the camera from ImageEnMView to show the video in ImageEnView. I tried to Events OnImageSelect but we do not display a picture and video display. So I wonder if it's possible to show the ImageEnView and how?
Go to Top of Page

fab

1310 Posts

Posted - Aug 15 2013 :  03:11:22  Show Profile  Reply
The TImageEnView (invisible component in this case) is used only to capture frames. These frames are then displayed as TImageEnMView thumbnails.
You can of course create a TImageEnView (on the form) for each video input, and forgot TImageEnMView.
Go to Top of Page

Boban

Yugoslavia
41 Posts

Posted - Aug 15 2013 :  10:31:00  Show Profile  Reply
Hi

To TImageEnView is invisible component.
I wish for each camera separately to include recording and I think that it can in this way as this below picture or it must otherwise. How to display code ?


Go to Top of Page

xequte

39064 Posts

Posted - Aug 15 2013 :  17:15:51  Show Profile  Reply
It should be quite easy to convert the demo to handle this.

It will be something like...

1. Create a visible TImageEnView and set up its OnDShowNewFrame event to get the current DShow sample.


2. Change ButtonAddInputClick to store the video input and source:
procedure TMainForm.ButtonAddInputClick(Sender: TObject);
var
  ie: TImageEnView;
  iVideoInput: Integer;
  iVideoSource: Integer;
begin
  ie := TImageEnView.Create(self);
  ie.Parent := self;
  ie.Visible := false;
  ie.OnDShowNewFrame := NewFrame;
  FormSelectInput.ie := ie;
  if FormSelectInput.ShowModal = mrOK then
  begin
    FImageEnViews.Add(ie);
    iVideoInput  := FormSelectInput.ComboBoxVideoInput.ItemIndex;
    iVideoSource := StrToIntDef(FormSelectInput.EditVideoSource.Text, 0);
    ie.IO.DShowParams.SetVideoInput(iVideoInput, iVideoSource);
    ie.IO.DShowParams.EnableSampleGrabber := true;
    ie.IO.DShowParams.Connect;
    ie.IO.DShowParams.Run;
    ie.Tag := ImageEnMView1.AppendImage(100, 100);
    ImageEnMView1.ImageTag[ie.Tag] := 1000 * iVideoInput + iVideoSource;
  end
  else
    ie.Free();
end;



3. In the TImageEnMView's OnClick event add:
procedure TMainForm.ImageEnMView1Click(Sender: TObject);
var
  iVideoInput: Integer;
  iVideoSource: Integer;
begin
  iSelected := ImageEnMView1.SelectedImage;
  if iSelected < 0 then
  begin
    ieDisplay.IO.DShowParams.Stop;
    ieDisplay.Blank;
  end
  else
  begin
    iVideoInput  := ImageEnMView1.ImageTag[iSelected] div 1000;
    iVideoSource := ImageEnMView1.ImageTag[iSelected] mod 1000;
    ie.IO.DShowParams.SetVideoInput(iVideoInput, iVideoSource);
    ieDisplay.IO.DShowParams.EnableSampleGrabber := true;
    ieDisplay.IO.DShowParams.Connect;
    ieDisplay.IO.DShowParams.Run;
  end;
end;


Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page

Boban

Yugoslavia
41 Posts

Posted - Aug 16 2013 :  07:26:40  Show Profile  Reply
Hi

Shows nothing in ImageEnView1.Maybe I made a mistake somewhere. I pray for the correction.
----------------------------------------------------------------------------------

unit umain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, imageenview, ieview, iemview, XPMan, Buttons, ExtCtrls,
  ComCtrls, ieds;

type
  TMainForm = class(TForm)
    XPManifest1: TXPManifest;
    Panel1: TPanel;
    ButtonAddInput: TBitBtn;
    StatusBar1: TStatusBar;
    Panel3: TPanel;
    Panel4: TPanel;
    ImageEnMView1: TImageEnMView;
    Panel5: TPanel;
    Splitter1: TSplitter;
    ImageEnView1: TImageEnView;
    Panel2: TPanel;
    Panel6: TPanel;
    procedure ButtonAddInputClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ImageEnMView1Click(Sender: TObject);

private
    { Private declarations }
    FImageEnViews: TList;
  public
    { Public declarations }

  procedure NewFrame(Sender: TObject);

  end;

var
  MainForm: TMainForm;

  ie: TImageEnView;

implementation

uses uselectinput;

{$R *.dfm}


procedure TMainForm.NewFrame(Sender: TObject);
var
  ie: TImageEnView;
  idx: integer;
begin
  ie := Sender as TImageEnView;
  idx := ie.Tag;
  ie.IO.DShowParams.GetSample(ImageEnMView1.GetTIEBitmap(idx));
  ImageEnMView1.ReleaseBitmap(idx);
  ImageEnMView1.UpdateImage(idx);

end;


procedure TMainForm.ButtonAddInputClick(Sender: TObject);
var
  iVideoInput: Integer;
  iVideoSource: Integer;

begin
  ie := TImageEnView.Create(self);
  ie.Parent := self;
  ie.Visible := false;
  ie.OnDShowNewFrame := NewFrame;
  FormSelectInput.ie := ie;
  if FormSelectInput.ShowModal = mrOK then
  begin
    FImageEnViews.Add(ie);
    iVideoInput  := FormSelectInput.ComboBoxVideoInput.ItemIndex;
    iVideoSource := StrToIntDef(FormSelectInput.EditVideoSource.Text, 0);
    ie.IO.DShowParams.SetVideoInput(iVideoInput, iVideoSource);
    ie.IO.DShowParams.EnableSampleGrabber := true;
    ie.IO.DShowParams.Connect;
    ie.IO.DShowParams.Run;
    ie.Tag := ImageEnMView1.AppendImage(100, 100);
   
     ImageEnMView1.ImageTag[ie.Tag] := 1000 * iVideoInput + iVideoSource;
  end
  else
    ie.Free();
end;


procedure TMainForm.FormCreate(Sender: TObject);
begin
  FImageEnViews := TList.Create();
end;

procedure TMainForm.FormDestroy(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to FImageEnViews.Count - 1 do
    (TObject(FImageEnViews[i]) as TImageEnView).Free();
end;


procedure TMainForm.ImageEnMView1Click(Sender: TObject);
var
  iVideoInput: Integer;
  iVideoSource: Integer;
  iSelected: Integer;

begin
  iSelected := ImageEnMView1.SelectedImage;
  if iSelected < 0 then
  begin
    ImageEnView1.IO.DShowParams.Stop;
    ImageEnView1.Blank;
  end
  else
  begin
    iVideoInput  := ImageEnMView1.ImageTag[iSelected] div 1000;
    iVideoSource := ImageEnMView1.ImageTag[iSelected] mod 1000;
    ie.IO.DShowParams.SetVideoInput(iVideoInput, iVideoSource);
    ImageEnView1.IO.DShowParams.EnableSampleGrabber := true;
    ImageEnView1.IO.DShowParams.Connect;
    ImageEnView1.IO.DShowParams.Run;

  end;

end;

end.
Go to Top of Page

xequte

39064 Posts

Posted - Aug 22 2013 :  17:39:02  Show Profile  Reply
Hi

Make sure you are not setting the OnDShowNewFrame for your display TImageEnView to the same one used by the TImageEnMViews.

You should create a new OnDShowNewFrame event for your Display TImageEnView with the following code:

procedure Tfmain.ieDisplayDShowNewFrame(Sender: TObject);
begin
  // copy current sample to ImageEnView's bitmap
  ieDisplay.IO.DShowParams.GetSample(ImageEnView1.Layers[0].Bitmap);

  // refresh the view
  ieDisplay.Update;
end;


Nigel
Xequte Software
www.xequte.com
nigel@xequte.com
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
Jump To: