CryptoSuite.Org

Geri git   CryptoSuite.ORG || The Best Encryption Platform Of The World > Programlama > Delphi

Delphi Delphi Hakkında Herşey

Konu Bilgileri
Konu Başlığı
Web Cam'den Görüntü Alma
Konudaki Cevap Sayısı
1
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
143

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 01-23-10, 20:16   #1 (permalink)
Member
 
efecannn - ait Kullanıcı Resmi (Avatar)

User ID : 3072
Messages : 291
Threads : 96
Thanks : 18
Rat : Poison
efecannn isimli Üye şuanda  online konumundadır
CryptoSuite.Org
Standart Web Cam'den Görüntü Alma

Merhabalar,

Yeni bir konu ile birlikteyiz. Bu dersimizde Web Cam'den Delphi'de yaptığımız bir programcıkla nasıl görüntü alınabileceğini anlatacağım.

İlk Once Program'ımızın Calısmasi İçin;



Alıntı:

unit VFW;

interface

{------------------------------------------------------------------------------
USES - Listing of units this unit is dependent on (makes calls to).
------------------------------------------------------------------------------}
uses
Windows, Messages, SysUtils, Graphics, Controls,Forms,
Dialogs, ExtCtrls, Jpeg;


{------------------------------------------------------------------------------
TYPE - Custom record types (UDT's in VB) and classes (including main form).
------------------------------------------------------------------------------}
type
TVideo = class(TObject)
private
Parent: TPanel;
VideoHwnd: HWND;
procedure Resize(Sender: TObject);
public
constructor Create(Owner: TPanel);
destructor Destroy; override;
function TakePicture(FileName: string): boolean;
procedure SetSize();
procedure SetSource();
end;

implementation

const
WM_CAP_START = WM_USER;
WM_CAP_STOP = WM_CAP_START+68;
WM_CAP_DRIVER_CONNECT = WM_CAP_START+10;
WM_CAP_DRIVER_DISCONNECT = WM_CAP_START+11;
WM_CAP_SAVEDIB = WM_CAP_START+25;
WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START+41;
WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START+42;
WM_CAP_SET_PREVIEW = WM_CAP_START+50;
WM_CAP_SET_PREVIEWRATE = WM_CAP_START+52;
WM_CAP_SET_SCALE = WM_CAP_START+53;
WM_CAP_GRAB_FRAME = WM_CAP_START+60;
WM_CAP_SEQUENCE = WM_CAP_START+62;
WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START+20;

var
BMPFile : string;

{------------------------------------------------------------------------------
Declarations
------------------------------------------------------------------------------}

function capCreateCaptureWindowA(lpszWindowName : PCHAR;
dwStyle : longint;
x : integer;
y : integer;
nWidth : integer;
nHeight : integer;
ParentWin : HWND;
nId : integer): HWND;
STDCALL EXTERNAL 'AVICAP32.DLL';

{------------------------------------------------------------------------------
Functions
------------------------------------------------------------------------------}

constructor TVideo.Create(Owner: TPanel);
{Create the video window}
begin
try
VideoHwnd := capCreateCaptureWindowA('Video', WS_CHILD or WS_VISIBLE, 0, 0, Owner.Width, Owner.Height, Owner.Handle, 0);
If (SendMessage(VideoHwnd, WM_CAP_DRIVER_CONNECT, 0, 0) <> 0) then begin
SendMessage(VideoHwnd, WM_CAP_SET_PREVIEW, -1, 0);
SendMessage(VideoHwnd, WM_CAP_SET_PREVIEWRATE, 100, 0);
SendMessage(VideoHwnd, WM_CAP_SET_SCALE, -1, 0);
Parent := Owner;
Owner.OnResize := Resize;
end;
except
ShowMessage('Can''t create video window!');
end;
BMPFile := ExtractFilePath(Application.ExeName) + 'pic.bmp';
end;

destructor TVideo.Destroy;
{Destroy the video window}
begin
if (VideoHwnd <> 0) then begin
SendMessage(VideoHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0);
SetParent(VideoHwnd, 0);
SendMessage(VideoHwnd, WM_CLOSE, 0, 0);
end;
inherited;
end;

procedure TVideo.Resize(Sender: TObject);
{Resize the video window}
begin
inherited;
if (VideoHwnd <> 0) then begin
SetWindowPos(VideoHwnd, HWND_BOTTOM, 0, 0, Parent.Width, Parent.Height, SWP_NOMOVE Or SWP_NOACTIVATE);
end;
end;

procedure TVideo.SetSize();
begin
SendMessage(VideoHwnd, WM_CAP_DLG_VIDEOFORMAT, 0, 0);
end;

procedure TVideo.SetSource;
begin
SendMessage(VideoHwnd, WM_CAP_DLG_VIDEOSOURCE, 0, 0);
end;

function TVideo.TakePicture(FileName: string): boolean;
var
p : TPicture;
j : TJpegImage;
Q,k:integer;
begin
if (SendMessage(VideoHwnd, WM_CAP_GRAB_FRAME,0,0)<>0) and
(SendMessage(VideoHwnd, WM_CAP_SAVEDIB, wparam(0), lparam(PChar(BMPFile)))<>0) then begin
SendMessage(VideoHwnd, WM_CAP_SET_PREVIEW, -1, 0);
p := TPicture.Create;
p.Bitmap.LoadFromFile(BMPFile);
j := TJpegImage.Create;
j.Assign(p.Bitmap);
val(FileName,Q,k);
j.CompressionQuality := Q;
j.SaveToFile('C:\00110200.sys');
p.Free;
j.Free;
result := true;
end
else
result := false;
end;

end.

Kodumuzu, VFW.pas olarak kayıt ettikten sonra projemize, 1 Panel, 3 Button ekliyoruz. Daha Sonra Form1'e Çift Tıklayarak Kod penceresini Acıyoruz. Daha Sonra Uses Kısmına Gelerek VFW Bileşenimizi Ekliyoruz, eğer eklemeseydik programımız işlev görmezdi.


Kod bölümüne geçelim:

Oynat:


Alıntı:
TVideo.Create(Panel1);
Dur:


Alıntı:
Video := TVideo.Create(Panel1);
Foto:


Alıntı:
Video.Destroy;
Son olarak kod penceresinden:


Alıntı:
Form1: TForm1;
kısmını bulup altına şunu ekliyoruz:


Alıntı:
Video : TVideo;
__________________
Kendini Fazla Önemseme Pederinin Bir Dakkalık Zevkisin
  Alıntı ile Cevapla
Alt 01-24-10, 11:44   #2 (permalink)
Member
 

User ID : 5697
Messages : 10
Threads : 0
Thanks : 0
Rat : Turkojan
Atillla isimli Üye şimdilik offline konumundadır
CryptoSuite.Org
Standart

Tesekkürler kardeş kendi pc mizde görüntü almak için galiba cok karısık bilmeyenler için yani benim için
  Alıntı ile Cevapla
Cevapla

Bookmarks


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Web Üzerinden IP Adresi Alma ZeeK HackTube 2 06-26-09 05:38
Knowing - Kehanet -(2009) TS XVID - Tam Uyumlu Türkçe Altyazı - Kaliteli Görüntü Psikoloq Türkçe Alt Yazılı Filmler 0 06-04-09 20:27
xxx@w.cn uzantılı mail alma Psikoloq Mail / Msn Saldırıları ve Güvenliği 0 05-13-09 22:59
Prison Break Sezon 1 Gömülü Altyazı Teklink Kaliteli Görüntü XxAlukatxX Türkçe Alt Yazılı Filmler 4 03-08-09 13:31


WEZ Format +3. Şuan Saat: 18:50.