Как работать с Web-камерой? Delphi , Мультимедиа , Видео
Сперва нужно скачать SDK с http://developer.logitech.com
Все установите, откройте delphi и сделайте Import ActiveX Control VPortal2, найдя его в списке. Теперь, создайте новую форму, и киньте VideoPortal из ActiveX panel а так же добавьте кнопку. В uses добавьте VideoPortal
на OnShow повесте:
Code:
VideoPortal1.PrepareControl('QCSDK',
'HKEY_LOCAL_MACHINE\Software\JCS Programmation\QCSDK', 0);
VideoPortal1.EnableUIElements(UIELEMENT_STATUSBAR, 0, 0);
VideoPortal1.ConnectCamera2;
VideoPortal1.EnablePreview := 1;
на ButtonClick добавьте:
Code:
var
BMP: TBitmap;
JPG: TJpegImage;
L: string;
begin
F := 'Photos\test.jpg';
VideoPortal1.StampBackgroundColor := clYellow;
VideoPortal1.StampTextColor := clBlack;
VideoPortal1.StampFontName := 'Arial';
VideoPortal1.StampPointSize := 10;
VideoPortal1.StampTransparentBackGround := 0;
L := Format(' %s - %s ', [DateTimeToStr(Now), Num]);
VideoPortal1.PictureToFile(0, 24, 'Temp.bmp', L);
BMP := TBitmap.Create;
JPG := TJpegImage.Create;
BMP.LoadFromFile('Temp.bmp');
JPG.CompressionQuality := 85;
JPG.Assign(BMP);
JPG.SaveToFile(F);
BMP.Free;
JPG.Free;
end;
Вот и всё готово, запускайте программулину, вы увидите изображение с камеры, нажимайте на кпоку и сохраните ваше изображение в файл.
VideoPortal.Pas (константы).
Code:
unit VideoPortal;
interface
// Copyright (c) 1996-2000 Logitech, Inc. All Rights Reserved
// User Interface Element, codes used with EnableUIElement method
const
UIELEMENT_640x480 = 0;
const
UIELEMENT_320x240 = 1;
const
UIELEMENT_PCSMART = 2;
const
UIELEMENT_STATUSBAR = 3;
const
UIELEMENT_UI = 4;
const
UIELEMENT_CAMERA = 5;
const
UIELEMENT_160x120 = 6;
// Camera status codes, returned by CameraState property
const
CAMERA_OK = 0;
const
CAMERA_UNPLUGGED = 1;
const
CAMERA_INUSE = 2;
const
CAMERA_ERROR = 3;
const
CAMERA_SUSPENDED = 4;
const
CAMERA_DUAL_DETACHED = 5;
const
CAMERA_UNKNOWNSTATUS = 10;
// Movie Recording Modes, used with MovieRecordMode property
const
SEQUENCECAPTURE_FPS_USERSPECIFIED = 1;
const
SEQUENCECAPTURE_FPS_FASTASPOSSIBLE = 2;
const
STEPCAPTURE_MANUALTRIGGERED = 3;
// Movie Creation Flags, used with MovieCreateFlags property
const
MOVIECREATEFLAGS_CREATENEW = 1;
const
MOVIECREATEFLAGS_APPEND = 2;
// Notification Codes
const
NOTIFICATIONMSG_MOTION = 1;
const
NOTIFICATIONMSG_MOVIERECORDERROR = 2;
const
NOTIFICATIONMSG_CAMERADETACHED = 3;
const
NOTIFICATIONMSG_CAMERAREATTACHED = 4;
const
NOTIFICATIONMSG_IMAGESIZECHANGE = 5;
const
NOTIFICATIONMSG_CAMERAPRECHANGE = 6;
const
NOTIFICATIONMSG_CAMERACHANGEFAILED = 7;
const
NOTIFICATIONMSG_POSTCAMERACHANGED = 8;
const
NOTIFICATIONMSG_CAMERBUTTONCLICKED = 9;
const
NOTIFICATIONMSG_VIDEOHOOK = 10;
const
NOTIFICATIONMSG_SETTINGDLGCLOSED = 11;
const
NOTIFICATIONMSG_QUERYPRECAMERAMODIFICATION = 12;
const
NOTIFICATIONMSG_MOVIESIZE = 13;
// Error codes used by NOTIFICATIONMSG_MOVIERECORDERROR notification:
const
WRITEFAILURE_RECORDINGSTOPPED = 0;
const
WRITEFAILURE_RECORDINGSTOPPED_FILECORRUPTANDDELETED = 1;
const
WRITEFAILURE_CAMERA_UNPLUGGED = 2;
const
WRITEFAILURE_CAMERA_SUSPENDED = 3;
// Camera type codes, returned by GetCameraType method
const
CAMERA_UNKNOWN = 0;
const
CAMERA_QUICKCAM_VC = 1;
const
CAMERA_QUICKCAM_QUICKCLIP = 2;
const
CAMERA_QUICKCAM_PRO = 3;
const
CAMERA_QUICKCAM_HOME = 4;
const
CAMERA_QUICKCAM_PRO_B = 5;
const
CAMERA_QUICKCAM_TEKCOM = 6;
const
CAMERA_QUICKCAM_EXPRESS = 7;
const
CAMERA_QUICKCAM_FROG = 8; // MIGHT CHANGE NAME BUT ENUM STAYS THE SAME
const
CAMERA_QUICKCAM_EMERALD = 9; // MIGHT CHANGE NAME BUT ENUM STAYS THE SAME
// Camera-specific property codes used by Set/GetCameraPropertyLong
const
PROPERTY_ORIENTATION = 0;
const
PROPERTY_BRIGHTNESSMODE = 1;
const
PROPERTY_BRIGHTNESS = 2;
const
PROPERTY_CONTRAST = 3;
const
PROPERTY_COLORMODE = 4;
const
PROPERTY_REDGAIN = 5;
const
PROPERTY_BLUEGAIN = 6;
const
PROPERTY_SATURATION = 7;
const
PROPERTY_EXPOSURE = 8;
const
PROPERTY_RESET = 9;
const
PROPERTY_COMPRESSION = 10;
const
PROPERTY_ANTIBLOOM = 11;
const
PROPERTY_LOWLIGHTFILTER = 12;
const
PROPERTY_IMAGEFIELD = 13;
const
PROPERTY_HUE = 14;
const
PROPERTY_PORT_TYPE = 15;
const
PROPERTY_PICTSMART_MODE = 16;
const
PROPERTY_PICTSMART_LIGHT = 17;
const
PROPERTY_PICTSMART_LENS = 18;
const
PROPERTY_MOTION_DETECTION_MODE = 19;
const
PROPERTY_MOTION_SENSITIVITY = 20;
const
PROPERTY_WHITELEVEL = 21;
const
PROPERTY_AUTO_WHITELEVEL = 22;
const
PROPERTY_ANALOGGAIN = 23;
const
PROPERTY_AUTO_ANALOGGAIN = 24;
const
PROPERTY_LOWLIGHTBOOST = 25;
const
PROPERTY_COLORBOOST = 26;
const
PROPERTY_ANTIFLICKER = 27;
const
PROPERTY_OPTIMIZATION_SPEED_QUALITY = 28;
const
PROPERTY_STREAM_HOOK = 29;
const
PROPERTY_LED = 30;
const
ADJUSTMENT_MANUAL = 0;
const
ADJUSTMENT_AUTOMATIC = 1;
const
ORIENTATIONMODE_NORMAL = 0;
const
ORIENTATIONMODE_MIRRORED = 1;
const
ORIENTATIONMODE_FLIPPED = 2;
const
ORIENTATIONMODE_FLIPPED_AND_MIRRORED = 3;
const
COMPRESSION_Q0 = 0;
const
COMPRESSION_Q1 = 1;
const
COMPRESSION_Q2 = 2;
const
ANTIFLICKER_OFF = 0;
const
ANTIFLICKER_50Hz = 1;
const
ANTIFLICKER_60Hz = 2;
const
OPTIMIZE_QUALITY = 0;
const
OPTIMIZE_SPEED = 1;
const
LED_OFF = 0;
const
LED_ON = 1;
const
LED_AUTO = 2;
const
LED_MAX = 3;
const
PICTSMART_LIGHTCORRECTION_NONE = 0;
const
PICTSMART_LIGHTCORRECTION_COOLFLORESCENT = 1;
const
PICTSMART_LIGHTCORRECTION_WARMFLORESCENT = 2;
const
PICTSMART_LIGHTCORRECTION_OUTSIDE = 3;
const
PICTSMART_LIGHTCORRECTION_TUNGSTEN = 4;
const
PICTSMART_LENSCORRECTION_NORMAL = 0;
const
PICTSMART_LENSCORRECTION_WIDEANGLE = 1;
const
PICTSMART_LENSCORRECTION_TELEPHOTO = 2;
const
CAMERADLG_GENERAL = 0;
const
CAMERADLG_ADVANCED = 1;
implementation
end.
Example shows how to use the PictureToMemory method in the QuickCam SDK.
type
TMemoryStream = class(Classes.TMemoryStream);
var
MS: TMemoryStream;
lSize: LongInt;
pBuffer: ^Byte;
begin
MS := TMemoryStream.Create;
bitmap1 := TBitmap.Create;
try
if VideoPortal1.PictureToMemory(0, 24, 0, lSize, '') = 1 then
begin
pBuffer := AllocMem(lSize);
if VideoPortal1.PictureToMemory(0, 24, integer(pBuffer), lSize, '') = 1 then
begin
MS.SetPointer(pBuffer, lSize);
bitmap1.loadfromstream(MS);
end;
end;
finally
MS.Free;
FreeMem(pBuffer);
end;
end;
Взято с Delphi Knowledge Base: http://www.baltsoft.com/ Похоже, вы пытаетесь использовать Logitech веб-камеру с помощью SDK QuickCam в Delphi.
Сначала вам нужно скачать и установить SDK с http://developer.logitech.com .
После установки SDK создайте новый форм в вашем проекте Delphi. Затем:
Добавьте компонент ActiveX-контроля (VPortal2) к вашему форм.
Настройте камеру, вызвав метод PrepareControl
с правильными параметрами.
Вот пример кода:
procedure TForm1 . FormShow ( Sender : TObject ) ;
begin
VideoPortal1 . PrepareControl ( 'QCSDK' ,
'HKEY_LOCAL_MACHINE\Software\JCS Programmation\QCSDK' , 0 ) ;
VideoPortal1 . EnableUIElements ( UIELEMENT_STATUSBAR , 0 , 0 ) ;
VideoPortal1 . ConnectCamera2 ;
VideoPortal1 . EnablePreview := 1 ;
end ;
Добавьте кнопку к вашему форм и обработайте событие клика по ней.
Вот пример кода для события клика по кнопке:
procedure TForm1 . ButtonClick ( Sender : TObject ) ;
var
BMP , JPG : TBitmap ;
L : string ;
begin
F := 'Photos\test.jpg' ;
VideoPortal1 . StampBackgroundColor := clYellow ;
VideoPortal1 . StampTextColor := clBlack ;
VideoPortal1 . StampFontName := 'Arial' ;
VideoPortal1 . StampPointSize := 10 ;
VideoPortal1 . StampTransparentBackGround := 0 ;
L := Format ( '%s - %s' , [ DateTimeToStr ( Now ) , Num ]) ;
VideoPortal1 . PictureToFile ( 0 , 24 , 'Temp.bmp' , L ) ;
BMP := TBitmap . Create ;
JPG := TJpegImage . Create ;
BMP . LoadFromFile ( 'Temp.bmp' ) ;
JPG . CompressionQuality := 85 ;
JPG . Assign ( BMP ) ;
JPG . SaveToFile ( F ) ;
BMP . Free ;
JPG . Free ;
end ;
Код захватывает кадр с веб-камеры, сохраняет его в временный файл bitmap и затем конвертирует в формат JPEG и сохраняет в указанный файл.
Объект VideoPortal1
- это экземпляр класса TVideoPortal
, который представляет собой SDK QuickCam. Метод PrepareControl
настраивает камеру для использования, а метод ConnectCamera2
подключает к веб-камере. Метод PictureToFile
захватывает кадр с веб-камеры и сохраняет его в файл.
Обратите внимание, что это только пример кода, и вам может потребоваться модифицировать его для соответствия вашим конкретным требованиям. Кроме того, вам нужно добавить обработку ошибок и другие функциональные возможности, как необходимо.
Как работать с Web-камерой? Для начала скачайте SDK с официального сайта Logitech, установите его и импортируйте ActiveX-управление VPortal2 в Delphi. Создайте новую форму, добавьте видеопанель VPortal и кнопку. В коде настройте параметры камеры и использ
Комментарии и вопросы Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Видео ::