From 334578ed91472a23370619349b5a4da16e666685 Mon Sep 17 00:00:00 2001 From: Laex Date: Mon, 24 Feb 2014 23:18:30 +0400 Subject: [PATCH] Fixed some bugs * Fixed a number of exported function "initModule_nonfree" in module "nonfree.pas" * Added comments in English in the project "cv_ExtractSURF.dpr" Signed-off-by: Laex --- Bin/SDL.dll | Bin 0 -> 303616 bytes component/OpenCV.dpk | 31 ++- component/OpenCV.dproj | 5 +- component/uOCVCamera.pas | 1 - component/uOCVIOProperties.pas | 194 ++++++++++++++++ component/uOCVImageOperation.pas | 214 +++++++++++------- component/uOCVRegister.pas | 22 ++ component/uOCVSplitter.pas | 37 ++- component/uOCVTypes.pas | 53 +++-- .../ffmpeg_sample_player.dpr | 9 +- .../ffmpeg_sample_player.dproj | 3 +- include/nonfree/nonfree.pas | 2 +- .../cCameraCapture/cCameraCapture.dproj | 2 +- .../Components/cCameraCapture/uMainForm.dfm | 10 +- .../Components/cCameraCapture/uMainForm.pas | 35 ++- .../LibDemo/cvExtractSURF/cv_ExtractSURF.dpr | 74 +++--- .../cvExtractSURF/cv_ExtractSURF.dproj | 2 +- .../LibDemo/cvExtractSURF/cv_ExtractSURF2.dpr | 3 - 18 files changed, 531 insertions(+), 166 deletions(-) create mode 100644 Bin/SDL.dll create mode 100644 component/uOCVIOProperties.pas diff --git a/Bin/SDL.dll b/Bin/SDL.dll new file mode 100644 index 0000000000000000000000000000000000000000..69fd61ecb81cf1423e7f387f87682540cabaff4a GIT binary patch literal 303616 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 VWGEE>{m;}~q@nxyoBy|8{|Q#Q>4*RT literal 0 HcmV?d00001 diff --git a/component/OpenCV.dpk b/component/OpenCV.dpk index 150cd90..abdf041 100644 --- a/component/OpenCV.dpk +++ b/component/OpenCV.dpk @@ -1,6 +1,26 @@ -// JCL_DEBUG_EXPERT_GENERATEJDBG OFF -// JCL_DEBUG_EXPERT_INSERTJDBG OFF -// JCL_DEBUG_EXPERT_DELETEMAPFILE OFF +// ***************************************************************** +// Delphi-OpenCV Demo +// Copyright (C) 2013 Project Delphi-OpenCV +// **************************************************************** +// Contributor: +// Laentir Valetov +// email:laex@bk.ru +// **************************************************************** +// You may retrieve the latest version of this file at the GitHub, +// located at git://github.com/Laex/Delphi-OpenCV.git +// **************************************************************** +// The contents of this file are used with permission, subject to +// the Mozilla Public License Version 1.1 (the "License"); you may +// not use this file except in compliance with the License. You may +// obtain a copy of the License at +// http://www.mozilla.org/MPL/MPL-1_1Final.html +// +// Software distributed under the License is distributed on an +// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +// implied. See the License for the specific language governing +// rights and limitations under the License. +// ******************************************************************* + package OpenCV; {$R *.res} @@ -33,7 +53,7 @@ package OpenCV; requires rtl, vcl, - designide; + DesignIDE; contains uOCVTypes in 'uOCVTypes.pas', @@ -41,6 +61,7 @@ contains uOCVView in 'uOCVView.pas', uOCVImageOperation in 'uOCVImageOperation.pas', uOCVRegister in 'uOCVRegister.pas', - uOCVSplitter in 'uOCVSplitter.pas'; + uOCVSplitter in 'uOCVSplitter.pas', + uOCVIOProperties in 'uOCVIOProperties.pas'; end. diff --git a/component/OpenCV.dproj b/component/OpenCV.dproj index b298ac5..3b64f1f 100644 --- a/component/OpenCV.dproj +++ b/component/OpenCV.dproj @@ -2,7 +2,7 @@ {67FAAD9E-2FAD-44C3-8F98-56827C3D1CE8} OpenCV.dpk - 15.2 + 15.3 VCL True Debug @@ -97,13 +97,14 @@ - + + Cfg_2 Base diff --git a/component/uOCVCamera.pas b/component/uOCVCamera.pas index 73ce731..08de7fd 100644 --- a/component/uOCVCamera.pas +++ b/component/uOCVCamera.pas @@ -193,7 +193,6 @@ begin if not(csDesigning in ComponentState) then begin FOpenCVCameraThread := TocvCameraThread.Create(True); - // FOpenCVCameraThread.Priority := tpHigher; FOpenCVCameraThread.OnNotifyData := OnNotifyData; FEnabled := False; FResolution := r160x120; diff --git a/component/uOCVIOProperties.pas b/component/uOCVIOProperties.pas new file mode 100644 index 0000000..8deb9fd --- /dev/null +++ b/component/uOCVIOProperties.pas @@ -0,0 +1,194 @@ +// ***************************************************************** +// Delphi-OpenCV Demo +// Copyright (C) 2013 Project Delphi-OpenCV +// **************************************************************** +// Contributor: +// Laentir Valetov +// email:laex@bk.ru +// **************************************************************** +// You may retrieve the latest version of this file at the GitHub, +// located at git://github.com/Laex/Delphi-OpenCV.git +// **************************************************************** +// The contents of this file are used with permission, subject to +// the Mozilla Public License Version 1.1 (the "License"); you may +// not use this file except in compliance with the License. You may +// obtain a copy of the License at +// http://www.mozilla.org/MPL/MPL-1_1Final.html +// +// Software distributed under the License is distributed on an +// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +// implied. See the License for the specific language governing +// rights and limitations under the License. +// ******************************************************************* + +unit uOCVIOProperties; + +interface + +Uses + System.Classes, + DesignEditors, + DesignIntf; + +Type + TImageOperationProperty = class(TClassProperty) + public + function GetAttributes: TPropertyAttributes; override; + function GetValue: string; override; + procedure GetValues(Proc: TGetStrProc); override; + procedure SetValue(const Value: string); override; + end; + + TVideoSourceProperty = class(TInterfaceProperty) + private + FGetValuesStrProc: TGetStrProc; + protected + procedure ReceiveComponentNames(const S: string); + public + function GetAttributes: TPropertyAttributes; override; + procedure GetValues(Proc: TGetStrProc); override; + procedure SetValue(const Value: string); override; + function GetValue: string; override; + end; + +implementation + +Uses + + VCL.Dialogs, + + System.SysUtils, + System.TypInfo, + System.RTLConsts, + uOCVImageOperation, + uOCVSplitter, + uOCVTypes; + +{ TImageOperationProperty } + +function TImageOperationProperty.GetAttributes: TPropertyAttributes; +begin + Result := inherited GetAttributes; + Result := Result - [paReadOnly] + [paValueList, paSortList, paRevertable, paVolatileSubProperties]; +end; + +function TImageOperationProperty.GetValue: string; +begin + Result := GetRegisteredImageOperations.GetNameByClass(TocvImageOperation(GetOrdValue).ClassType); +end; + +procedure TImageOperationProperty.GetValues(Proc: TGetStrProc); +var + i: Integer; + rIO: TRegisteredImageOperations; +begin + rIO := GetRegisteredImageOperations; + for i := 0 to rIO.Count - 1 do + Proc(rIO[i]); +end; + +procedure TImageOperationProperty.SetValue(const Value: string); +Var + APropertiesClass: TocvImageOperationClass; + i: Integer; + AIntf: IocvEditorPropertiesContainer; +begin + APropertiesClass := GetRegisteredImageOperations.FindByClassName(Value); + if APropertiesClass = nil then + APropertiesClass := TocvImageOperationClass(GetRegisteredImageOperations.Objects[0]); + for i := 0 to PropCount - 1 do + if Supports(GetComponent(i), IocvEditorPropertiesContainer, AIntf) then + AIntf.SetPropertiesClass(APropertiesClass); + Modified; +end; + +{ TVideoSourceProperty } + +function TVideoSourceProperty.GetAttributes: TPropertyAttributes; +begin + Result := inherited GetAttributes; + Result := Result - [paReadOnly] + [paValueList, paSortList, paRevertable]; +end; + +function TVideoSourceProperty.GetValue: string; +Var + AInterface: IInterface; + ICR: IocvDataSource; +begin + AInterface := GetIntfValue; + if (AInterface <> nil) and Supports(AInterface, IocvDataSource, ICR) then + Result := ICR.GetName + else + Result := ''; +end; + +procedure TVideoSourceProperty.GetValues(Proc: TGetStrProc); +begin + FGetValuesStrProc := Proc; + try + Designer.GetComponentNames(GetTypeData(TypeInfo(TComponent)), ReceiveComponentNames); + finally + FGetValuesStrProc := nil; + end; +end; + +procedure TVideoSourceProperty.ReceiveComponentNames(const S: string); +var + Temp: TComponent; + Intf: IInterface; + i: Integer; +begin + Temp := Designer.GetComponent(S); + if Assigned(FGetValuesStrProc) and Assigned(Temp) then + begin + if Supports(TObject(Temp), GetTypeData(GetPropType)^.Guid, Intf) then + FGetValuesStrProc(S); + if not HasInstance(Temp) then + if Temp is TocvSplitter then + for i := 0 to (Temp as TocvSplitter).Channels.Count - 1 do + FGetValuesStrProc(S + '[' + i.ToString + ']'); + end; +end; + +procedure TVideoSourceProperty.SetValue(const Value: string); +var + Intf: IInterface; + Component: TComponent; + CompName: string; + n1, n2, ChanIndex: Integer; + SpComp: TocvSplitter; +begin + if Value = '' then + Intf := nil + else + begin + if Pos('[', Value) <> 0 then + begin + CompName := Copy(Value, 1, Pos('[', Value) - 1); + n1 := Pos('[', Value); + n2 := Pos(']', Value); + ChanIndex := Copy(Value, n1 + 1, n2 - n1 - 1).ToInteger; + SpComp := Designer.GetComponent(CompName) as TocvSplitter; + if Assigned(SpComp) and (ChanIndex < SpComp.Channels.Count) then + Intf := SpComp.Channels[ChanIndex] + else + raise EDesignPropertyError.CreateRes(@SInvalidPropertyValue); + end + else + begin + Component := Designer.GetComponent(Value); + if (Component = nil) or (not Supports(TObject(Component), GetTypeData(GetPropType)^.Guid, Intf)) then + raise EDesignPropertyError.CreateRes(@SInvalidPropertyValue); + end; + end; + SetIntfValue(Intf); +end; + +initialization + +RegisterPropertyEditor(TypeInfo(TocvCustomImageOperation), TocvImageOperation, 'Properties', TImageOperationProperty); +RegisterPropertyEditor(TypeInfo(string), TocvImageOperation, 'PropertiesClassName', nil); + +RegisterPropertyEditor(TypeInfo(IocvDataSource), nil, 'VideoSource', TVideoSourceProperty); + +end. diff --git a/component/uOCVImageOperation.pas b/component/uOCVImageOperation.pas index 03eb0ee..33469b6 100644 --- a/component/uOCVImageOperation.pas +++ b/component/uOCVImageOperation.pas @@ -37,11 +37,12 @@ type TocvCustomImageOperation = class(TPersistent) private CS: TCriticalSection; + FOwner: TComponent; protected procedure LockTransform; procedure UnlockTransform; public - constructor Create; virtual; + constructor Create(AOwner: TComponent); virtual; destructor Destroy; override; function Transform(const Source: pIplImage; var Destanation: pIplImage): Boolean; virtual; abstract; end; @@ -70,7 +71,7 @@ type procedure SetThreshold2(const Value: double); protected public - constructor Create; override; + constructor Create(AOwner: TComponent); override; function Transform(const Source: pIplImage; var Destanation: pIplImage): Boolean; override; published property Threshold1: double Read FThreshold1 write SetThreshold1; @@ -95,7 +96,7 @@ type procedure SetSize2(const Value: Integer); procedure SetSmoothOperation(const Value: TocvSmoothOperations); public - constructor Create; override; + constructor Create(AOwner: TComponent); override; function Transform(const Source: pIplImage; var Destanation: pIplImage): Boolean; override; published property sigma1: double read FSigma1 write SetSigma1; @@ -105,118 +106,137 @@ type property SmoothOperation: TocvSmoothOperations read FSmoothOperation write SetSmoothOperation default GAUSSIAN; end; - TcvImageOperations = (ioNone, ioGrayScale, ioCanny, ioSmooth); + IocvEditorPropertiesContainer = interface + ['{418F88DD-E35D-4425-BF24-E753E83D35D6}'] + function GetProperties: TocvCustomImageOperation; + function GetPropertiesClass: TocvImageOperationClass; + procedure SetPropertiesClass(Value: TocvImageOperationClass); + end; -Const - cvImageOperation: array [TcvImageOperations] of TocvImageOperationClass = (TocvImageOperation_None, TocvImageOperation_GrayScale, - TovcImageOperation_Canny, TovcImageOperation_Smooth); - -function GetImageOperationByImageOperationClass(const ImageOperationClass: TClass): TcvImageOperations; - -Type - TocvImageOperation = class(TocvDataSourceAndReceiver) + TocvImageOperation = class(TocvDataSourceAndReceiver, IocvEditorPropertiesContainer) private CS: TCriticalSection; - FOperation: TcvImageOperations; - FOperationParams: TocvCustomImageOperation; + FProperties: TocvCustomImageOperation; + FPropertiesClass: TocvImageOperationClass; procedure LockTransform; procedure UnlockTransform; - procedure SetOperationParams(const Value: TocvCustomImageOperation); - procedure SetOperations(const Value: TcvImageOperations); + procedure CreateProperties; + procedure DestroyProperties; + procedure RecreateProperties; + function GetPropertiesClassName: string; + procedure SetProperties(const Value: TocvCustomImageOperation); + procedure SetPropertiesClass(Value: TocvImageOperationClass); + procedure SetPropertiesClassName(const Value: string); protected procedure TakeImage(const IplImage: pIplImage); override; + function GetProperties: TocvCustomImageOperation; + function GetPropertiesClass: TocvImageOperationClass; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; + property PropertiesClass: TocvImageOperationClass read GetPropertiesClass write SetPropertiesClass; published - property Operation: TcvImageOperations Read FOperation write SetOperations; - property OperationParams: TocvCustomImageOperation Read FOperationParams write SetOperationParams; + property PropertiesClassName: string read GetPropertiesClassName write SetPropertiesClassName; + property Properties: TocvCustomImageOperation read GetProperties write SetProperties; end; + TRegisteredImageOperations = class(TStringList) + public + function FindByClassName(const ClassName: String): TocvImageOperationClass; + function GetNameByClass(const IOClass: TClass): String; + procedure RegisterIOClass(const IOClass: TClass; const ClassName: String); + end; + +function GetRegisteredImageOperations: TRegisteredImageOperations; + implementation Uses - VCL.Forms, core_c, imgproc_c, imgproc.types_c; -function GetImageOperationByImageOperationClass(const ImageOperationClass: TClass): TcvImageOperations; Var - i: TcvImageOperations; + _RegisteredImageOperations: TRegisteredImageOperations = nil; + +function GetRegisteredImageOperations: TRegisteredImageOperations; begin - Result := ioNone; - for i := Low(cvImageOperation) to High(cvImageOperation) do - if cvImageOperation[i] = ImageOperationClass then - Exit(i); + if not Assigned(_RegisteredImageOperations) then + _RegisteredImageOperations := TRegisteredImageOperations.Create; + Result := _RegisteredImageOperations; end; { TocvImageOperation } -procedure TocvImageOperation.SetOperationParams(const Value: TocvCustomImageOperation); -Var - io: TcvImageOperations; +procedure TocvImageOperation.SetProperties(const Value: TocvCustomImageOperation); begin - if Value <> FOperationParams then + if (FProperties <> nil) and (Value <> nil) then + FProperties.Assign(Value); +end; + +procedure TocvImageOperation.SetPropertiesClass(Value: TocvImageOperationClass); +begin + if FPropertiesClass <> Value then begin - LockTransform; - try - Operation := GetImageOperationByImageOperationClass(Value.ClassType); - - // if csDesigning in ComponentState then - // if (Owner is TForm) and (TForm(Owner).Designer <> nil) then - // TForm(Owner).Designer.Notification(Self, opRemove); - - FOperationParams.Assign(Value); - - // if csDesigning in ComponentState then - // if (Owner is TForm) and (TForm(Owner).Designer <> nil) then - // TForm(Owner).Designer.Notification(Self, opInsert); - - finally - UnlockTransform; - end; + FPropertiesClass := Value; + RecreateProperties; end; end; -procedure TocvImageOperation.SetOperations(const Value: TcvImageOperations); +procedure TocvImageOperation.CreateProperties; begin - if FOperation <> Value then - begin - FOperation := Value; - if Assigned(FOperationParams) then - begin - if csDesigning in ComponentState then - if (Owner is TForm) and (TForm(Owner).Designer <> nil) then - TForm(Owner).Designer.Notification(Self, opRemove); - FreeAndNil(FOperationParams); - end; + if FPropertiesClass <> nil then + FProperties := FPropertiesClass.Create(Self); +end; - FOperationParams := cvImageOperation[FOperation].Create; +procedure TocvImageOperation.DestroyProperties; +begin + FreeAndNil(FProperties); +end; - if csDesigning in ComponentState then - if (Owner is TForm) and (TForm(Owner).Designer <> nil) then - TForm(Owner).Designer.Notification(Self, opInsert); - end; +procedure TocvImageOperation.RecreateProperties; +begin + DestroyProperties; + CreateProperties; +end; + +procedure TocvImageOperation.SetPropertiesClassName(const Value: string); +begin + PropertiesClass := TocvImageOperationClass(GetRegisteredImageOperations.FindByClassName(Value)); end; constructor TocvImageOperation.Create(AOwner: TComponent); begin inherited; CS := TCriticalSection.Create; - FOperationParams := TocvImageOperation_None.Create; - FOperation := ioNone; end; destructor TocvImageOperation.Destroy; begin LockTransform; - if Assigned(FOperationParams) then - FreeAndNil(FOperationParams); + if Assigned(FProperties) then + FreeAndNil(FProperties); CS.Free; inherited; end; +function TocvImageOperation.GetProperties: TocvCustomImageOperation; +begin + if not Assigned(FProperties) then + FProperties := TocvImageOperation_None.Create(Self); + Result := FProperties; +end; + +function TocvImageOperation.GetPropertiesClass: TocvImageOperationClass; +begin + Result := TocvImageOperationClass(Properties.ClassType); +end; + +function TocvImageOperation.GetPropertiesClassName: string; +begin + Result := Properties.ClassName; +end; + procedure TocvImageOperation.LockTransform; begin CS.Enter; @@ -226,7 +246,7 @@ procedure TocvImageOperation.TakeImage(const IplImage: pIplImage); var Destanation: pIplImage; begin - if Assigned(FOperationParams) and FOperationParams.Transform(IplImage, Destanation) then + if Assigned(FProperties) and FProperties.Transform(IplImage, Destanation) then begin LockTransform; try @@ -334,15 +354,11 @@ end; { TCustomOpenCVImgOperation } -constructor TocvCustomImageOperation.Create { (AOwner: TPersistent) }; +constructor TocvCustomImageOperation.Create(AOwner: TComponent); begin inherited Create; - // FOwner := AOwner; + FOwner := AOwner; CS := TCriticalSection.Create; - // SetLength( - // FValues, - // 10); - // FOwner := AOwner; end; destructor TocvCustomImageOperation.Destroy; @@ -351,16 +367,6 @@ begin inherited; end; -// function TocvCustomImageOperation.GetOwner: TPersistent; -// begin -// Result := FOwner; -// end; - -// function TocvCustomImageOperation.GetOwner: TPersistent; -// begin -// Result := FOwner; -// end; - procedure TocvCustomImageOperation.LockTransform; begin CS.Enter; @@ -464,8 +470,48 @@ begin end; end; +{ TRegisteredImageOperations } + +function TRegisteredImageOperations.FindByClassName(const ClassName: String): TocvImageOperationClass; +Var + i: Integer; +begin + i := IndexOf(ClassName); + if i <> -1 then + Result := TocvImageOperationClass(Objects[i]) + else + Result := Nil; +end; + +function TRegisteredImageOperations.GetNameByClass(const IOClass: TClass): String; +Var + i: Integer; +begin + Result := ''; + for i := 0 to Count - 1 do + if Integer(Objects[i]) = Integer(IOClass) then + begin + Result := Self[i]; + Break; + end; +end; + +procedure TRegisteredImageOperations.RegisterIOClass(const IOClass: TClass; const ClassName: String); +begin + AddObject(ClassName, TObject(IOClass)); + RegisterClass(TPersistentClass(IOClass)); +end; + initialization -RegisterClasses([TocvImageOperation_None, TocvImageOperation_GrayScale, TovcImageOperation_Canny, TovcImageOperation_Smooth]); +GetRegisteredImageOperations.RegisterIOClass(TocvImageOperation_None, 'None'); +GetRegisteredImageOperations.RegisterIOClass(TocvImageOperation_GrayScale, 'GrayScale'); +GetRegisteredImageOperations.RegisterIOClass(TovcImageOperation_Canny, 'Canny'); +GetRegisteredImageOperations.RegisterIOClass(TovcImageOperation_Smooth, 'Smooth'); + +finalization + +if Assigned(_RegisteredImageOperations) then + FreeAndNil(_RegisteredImageOperations); end. diff --git a/component/uOCVRegister.pas b/component/uOCVRegister.pas index 70fef48..7d08fbe 100644 --- a/component/uOCVRegister.pas +++ b/component/uOCVRegister.pas @@ -1,3 +1,25 @@ +// ***************************************************************** +// Delphi-OpenCV Demo +// Copyright (C) 2013 Project Delphi-OpenCV +// **************************************************************** +// Contributor: +// Laentir Valetov +// email:laex@bk.ru +// **************************************************************** +// You may retrieve the latest version of this file at the GitHub, +// located at git://github.com/Laex/Delphi-OpenCV.git +// **************************************************************** +// The contents of this file are used with permission, subject to +// the Mozilla Public License Version 1.1 (the "License"); you may +// not use this file except in compliance with the License. You may +// obtain a copy of the License at +// http://www.mozilla.org/MPL/MPL-1_1Final.html +// +// Software distributed under the License is distributed on an +// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +// implied. See the License for the specific language governing +// rights and limitations under the License. +// ******************************************************************* unit uOCVRegister; interface diff --git a/component/uOCVSplitter.pas b/component/uOCVSplitter.pas index d939c46..8371265 100644 --- a/component/uOCVSplitter.pas +++ b/component/uOCVSplitter.pas @@ -43,22 +43,26 @@ Type function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall; function _AddRef: Integer; stdcall; function _Release: Integer; stdcall; + function GetName: string; published - property Name: String read FName write FName; + constructor Create(Collection: TCollection); override; + property Name: String read GetName write FName; end; TocvChannelCollection = class(TCollection) private + FOwner: TComponent; function GetOCVItem(Index: Integer): IocvDataSource; public + constructor Create(const AOwner: TComponent; const ItemClass: TCollectionItemClass); property OCVChannel[Index: Integer]: IocvDataSource read GetOCVItem; default; end; TocvSplitter = class(TocvDataReceiver) private FChannels: TocvChannelCollection; - FocvVideoSource: TocvDataSource; - procedure SetOpenCVVideoSource(const Value: TocvDataSource); + FocvVideoSource: IocvDataSource; + procedure SetOpenCVVideoSource(const Value: IocvDataSource); procedure SetChannels(const Value: TocvChannelCollection); protected procedure TakeImage(const IplImage: pIplImage); override; @@ -66,18 +70,20 @@ Type constructor Create(AOwner: TComponent); override; destructor Destroy; override; published - property VideoSource: TocvDataSource Read FocvVideoSource write SetOpenCVVideoSource; + property VideoSource: IocvDataSource Read FocvVideoSource write SetOpenCVVideoSource; property Channels: TocvChannelCollection read FChannels write SetChannels; end; implementation +Uses System.SysUtils; + { TocvSplitter } constructor TocvSplitter.Create(AOwner: TComponent); begin inherited; - FChannels := TocvChannelCollection.Create(TocvChannel); + FChannels := TocvChannelCollection.Create(Self, TocvChannel); end; destructor TocvSplitter.Destroy; @@ -91,7 +97,7 @@ begin FChannels.Assign(Value); end; -procedure TocvSplitter.SetOpenCVVideoSource(const Value: TocvDataSource); +procedure TocvSplitter.SetOpenCVVideoSource(const Value: IocvDataSource); begin if FocvVideoSource <> Value then begin @@ -113,6 +119,19 @@ end; { TocvChannel } +constructor TocvChannel.Create(Collection: TCollection); +begin + inherited; + Name; +end; + +function TocvChannel.GetName: string; +begin + if Length(Trim(FName)) = 0 then + FName := (Collection as TocvChannelCollection).FOwner.Name + '[' + ID.ToString + ']'; + Result := FName; +end; + procedure TocvChannel.NotifyReceiver(const IplImage: pIplImage); begin if Assigned(FOpenCVVideoReceiver) then @@ -155,6 +174,12 @@ end; { TocvChannelCollection } +constructor TocvChannelCollection.Create(const AOwner: TComponent; const ItemClass: TCollectionItemClass); +begin + inherited Create(ItemClass); + FOwner := AOwner; +end; + function TocvChannelCollection.GetOCVItem(Index: Integer): IocvDataSource; begin Result := TocvChannel(inherited GetItem(Index)); diff --git a/component/uOCVTypes.pas b/component/uOCVTypes.pas index 8d47a9a..67f5d7e 100644 --- a/component/uOCVTypes.pas +++ b/component/uOCVTypes.pas @@ -1,25 +1,25 @@ -(* /***************************************************************** - // Delphi-OpenCV Demo - // Copyright (C) 2013 Project Delphi-OpenCV - // **************************************************************** - // Contributor: - // laentir Valetov - // email:laex@bk.ru - // **************************************************************** - // You may retrieve the latest version of this file at the GitHub, - // located at git://github.com/Laex/Delphi-OpenCV.git - // **************************************************************** - // The contents of this file are used with permission, subject to - // the Mozilla Public License Version 1.1 (the "License"); you may - // not use this file except in compliance with the License. You may - // obtain a copy of the License at - // http://www.mozilla.org/MPL/MPL-1_1Final.html - // - // Software distributed under the License is distributed on an - // "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - // implied. See the License for the specific language governing - // rights and limitations under the License. - ******************************************************************* *) +// ***************************************************************** +// Delphi-OpenCV Demo +// Copyright (C) 2013 Project Delphi-OpenCV +// **************************************************************** +// Contributor: +// Laentir Valetov +// email:laex@bk.ru +// **************************************************************** +// You may retrieve the latest version of this file at the GitHub, +// located at git://github.com/Laex/Delphi-OpenCV.git +// **************************************************************** +// The contents of this file are used with permission, subject to +// the Mozilla Public License Version 1.1 (the "License"); you may +// not use this file except in compliance with the License. You may +// obtain a copy of the License at +// http://www.mozilla.org/MPL/MPL-1_1Final.html +// +// Software distributed under the License is distributed on an +// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +// implied. See the License for the specific language governing +// rights and limitations under the License. +// ******************************************************************* unit uOCVTypes; @@ -42,6 +42,7 @@ Type IocvDataSource = interface ['{80640C0A-6828-42F8-83E7-DA5FD9036DFF}'] procedure SetReceiver(const OpenCVVideoReceiver: IocvDataReceiver); + function GetName: string; end; TocvReceiverList = TList; @@ -52,6 +53,7 @@ Type protected FOpenCVVideoReceiver: IocvDataReceiver; procedure NotifyReceiver(const IplImage: pIplImage); virtual; + function GetName: string; virtual; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -110,6 +112,11 @@ begin inherited; end; +function TocvDataSource.GetName: string; +begin + Result := Name; +end; + procedure TocvDataSource.NotifyReceiver(const IplImage: pIplImage); begin if Assigned(FOpenCVVideoReceiver) then @@ -170,7 +177,7 @@ end; procedure TocvDataReceiver.SetVideoSource(const Value: TObject); begin - VideoSource := Value as TocvDataSource; + VideoSource := Value as TocvDataSource; end; procedure TocvDataReceiver.TakeImage(const IplImage: pIplImage); diff --git a/include/ffmpeg/examples/ffmpeg_sample_player/ffmpeg_sample_player.dpr b/include/ffmpeg/examples/ffmpeg_sample_player/ffmpeg_sample_player.dpr index 81a5b6a..5d32305 100644 --- a/include/ffmpeg/examples/ffmpeg_sample_player/ffmpeg_sample_player.dpr +++ b/include/ffmpeg/examples/ffmpeg_sample_player/ffmpeg_sample_player.dpr @@ -1,6 +1,6 @@ program ffmpeg_sample_player; -{.$APPTYPE CONSOLE} +{ .$APPTYPE CONSOLE } {$R *.res} {$include ffmpeg.inc} @@ -65,7 +65,6 @@ begin av_register_all(); avformat_network_init(); - // Init SDL with video support err := SDL_Init(SDL_INIT_VIDEO); if (err < 0) then @@ -113,7 +112,7 @@ begin Halt(1); end; - screen := SDL_SetVideoMode(codec_context^.width, codec_context^.height, 0, 0); + screen := SDL_SetVideoMode(codec_context^.width, codec_context^.height, 0, 0 { SDL_FULLSCREEN } ); if (screen = nil) then begin WriteLn('Couldn''t set video mode'); @@ -122,8 +121,8 @@ begin bmp := SDL_CreateYUVOverlay(codec_context^.width, codec_context^.height, SDL_YV12_OVERLAY, screen); - img_convert_context := sws_getCachedContext(nil, codec_context^.width, codec_context^.height, codec_context^.pix_fmt, - codec_context^.width, codec_context^.height, AV_PIX_FMT_YUV420P, SWS_BICUBIC, nil, nil, nil); + img_convert_context := sws_getCachedContext(nil, codec_context^.width, codec_context^.height, codec_context^.pix_fmt, codec_context^.width, codec_context^.height, AV_PIX_FMT_YUV420P, SWS_BICUBIC, + nil, nil, nil); if (img_convert_context = nil) then begin WriteLn('Cannot initialize the conversion context'); diff --git a/include/ffmpeg/examples/ffmpeg_sample_player/ffmpeg_sample_player.dproj b/include/ffmpeg/examples/ffmpeg_sample_player/ffmpeg_sample_player.dproj index 77383c5..1c55264 100644 --- a/include/ffmpeg/examples/ffmpeg_sample_player/ffmpeg_sample_player.dproj +++ b/include/ffmpeg/examples/ffmpeg_sample_player/ffmpeg_sample_player.dproj @@ -1,7 +1,7 @@  {4A70D321-10C0-4AAE-9C24-FAA11F93CC66} - 15.2 + 15.3 None ffmpeg_sample_player.dpr True @@ -136,6 +136,7 @@ true + rtsp://10.1.1.201/Streaming/Channels/1?transportmode=unicast 1033 None false diff --git a/include/nonfree/nonfree.pas b/include/nonfree/nonfree.pas index 8ac0163..dd08362 100644 --- a/include/nonfree/nonfree.pas +++ b/include/nonfree/nonfree.pas @@ -105,6 +105,6 @@ implementation Uses uLibName; -function initModule_nonfree; external Nonfree_DLL index 979; +function initModule_nonfree; external Nonfree_DLL index 1025; end. diff --git a/samples/Components/cCameraCapture/cCameraCapture.dproj b/samples/Components/cCameraCapture/cCameraCapture.dproj index 252ef7a..a90e87c 100644 --- a/samples/Components/cCameraCapture/cCameraCapture.dproj +++ b/samples/Components/cCameraCapture/cCameraCapture.dproj @@ -1,7 +1,7 @@  {32F0B620-F9A6-4081-8E87-C89FF09CAD04} - 15.1 + 15.3 VCL cCameraCapture.dpr True diff --git a/samples/Components/cCameraCapture/uMainForm.dfm b/samples/Components/cCameraCapture/uMainForm.dfm index 58d04e1..782961c 100644 --- a/samples/Components/cCameraCapture/uMainForm.dfm +++ b/samples/Components/cCameraCapture/uMainForm.dfm @@ -51,7 +51,7 @@ object MainForm: TMainForm end object ocvw1: TocvView Left = 8 - Top = 8 + Top = 4 Width = 294 Height = 269 end @@ -60,14 +60,16 @@ object MainForm: TMainForm Top = 296 Width = 294 Height = 269 + VideoSource = ocvmgprtn1 end object ocvcmr1: TocvCamera - Resolution = r800x448 + Enabled = True + Resolution = r1280x720 Left = 368 Top = 132 end object ocvmgprtn1: TocvImageOperation - Operation = ioNone + PropertiesClassName = 'TocvImageOperation_None' Left = 368 Top = 228 end @@ -75,8 +77,10 @@ object MainForm: TMainForm VideoSource = ocvcmr1 Channels = < item + Name = 'ocvspltr1[0]' end item + Name = 'ocvspltr1[1]' end> Left = 368 Top = 180 diff --git a/samples/Components/cCameraCapture/uMainForm.pas b/samples/Components/cCameraCapture/uMainForm.pas index c2594f3..0abc7b5 100644 --- a/samples/Components/cCameraCapture/uMainForm.pas +++ b/samples/Components/cCameraCapture/uMainForm.pas @@ -1,3 +1,26 @@ +// ***************************************************************** +// Delphi-OpenCV Demo +// Copyright (C) 2013 Project Delphi-OpenCV +// **************************************************************** +// Contributor: +// Laentir Valetov +// email:laex@bk.ru +// **************************************************************** +// You may retrieve the latest version of this file at the GitHub, +// located at git://github.com/Laex/Delphi-OpenCV.git +// **************************************************************** +// The contents of this file are used with permission, subject to +// the Mozilla Public License Version 1.1 (the "License"); you may +// not use this file except in compliance with the License. You may +// obtain a copy of the License at +// http://www.mozilla.org/MPL/MPL-1_1Final.html +// +// Software distributed under the License is distributed on an +// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +// implied. See the License for the specific language governing +// rights and limitations under the License. +// ******************************************************************* + unit uMainForm; interface @@ -31,9 +54,14 @@ implementation {$R *.dfm} +Const + IOClass: array [0 .. 3] of TocvImageOperationClass = ( + { } TocvImageOperation_None, TocvImageOperation_GrayScale, + { } TovcImageOperation_Canny, TovcImageOperation_Smooth); + procedure TMainForm.cbb1Change(Sender: TObject); begin - ocvmgprtn1.Operation := TcvImageOperations(cbb1.ItemIndex); + ocvmgprtn1.PropertiesClass := IOClass[cbb1.ItemIndex]; end; procedure TMainForm.chk1Click(Sender: TObject); @@ -44,12 +72,11 @@ end; procedure TMainForm.FormCreate(Sender: TObject); begin ocvw1.VideoSource := ocvspltr1.Channels[0]; - ocvmgprtn1.VideoSource := ocvspltr1.Channels[1]; ocvw2.VideoSource := ocvmgprtn1; - - cbb1.ItemIndex := Integer(ocvmgprtn1.Operation); + cbb1.ItemIndex := 0; chk1.Checked := ocvcmr1.Enabled; + ocvmgprtn1.PropertiesClass := IOClass[cbb1.ItemIndex]; end; end. diff --git a/samples/LibDemo/cvExtractSURF/cv_ExtractSURF.dpr b/samples/LibDemo/cvExtractSURF/cv_ExtractSURF.dpr index 42abcc1..ae7fb23 100644 --- a/samples/LibDemo/cvExtractSURF/cv_ExtractSURF.dpr +++ b/samples/LibDemo/cvExtractSURF/cv_ExtractSURF.dpr @@ -24,9 +24,6 @@ // http://blog.vidikon.com/?p=213 // *************************************************************** *) -// JCL_DEBUG_EXPERT_GENERATEJDBG OFF -// JCL_DEBUG_EXPERT_INSERTJDBG OFF -// JCL_DEBUG_EXPERT_DELETEMAPFILE OFF program cv_ExtractSURF; {$APPTYPE CONSOLE} @@ -46,6 +43,7 @@ uses nonfree; // cðàâíåíèå äâóõ îcîáåííîcòåé +// comparison of the two features function compareSURFDescriptors(const d1: PSingle; const d2: PSingle; best: Double; length: Integer): Double; var total_cost: Double; @@ -70,8 +68,8 @@ begin end; // cðàâíèâàåò îäíó îcîáåííîcòü îáúåêòà cî âcåìè îcîáåííîcòÿìè cöåíû -function naiveNearestNeighbor(const vec: PSingle; laplacian: Integer; const model_keypoints: pCvSeq; - const model_descriptors: pCvSeq): Integer; +// compares one feature of the scene with all the features +function naiveNearestNeighbor(const vec: PSingle; laplacian: Integer; const model_keypoints: pCvSeq; const model_descriptors: pCvSeq): Integer; Var length, i, neighbor: Integer; d, dist1, dist2: Double; @@ -84,9 +82,11 @@ begin dist1 := 1E6; dist2 := 1E6;; // Íà÷àëüíàÿ îcîáåííîcòü cöåíû + // The initial feature scenes cvStartReadSeq(model_keypoints, @kreader, 0); cvStartReadSeq(model_descriptors, @reader, 0); // Ïåðåáîð âcåõ îcîáåííîcòåé cöåíû + // Iterating through all features of the scene for i := 0 to model_descriptors.total - 1 do begin kp := pCvSURFPoint(kreader.ptr); @@ -94,13 +94,16 @@ begin CV_NEXT_SEQ_ELEM(kreader.seq.elem_size, kreader); CV_NEXT_SEQ_ELEM(reader.seq.elem_size, reader); // Äëÿ ócêîðåíèÿ cíà÷àëà cðàâíèâàåòcÿ ëàïëccèàí îcîáåííîcòåé + // To accelerate the first compared Laplacian features if (laplacian <> kp.laplacian) then continue; // cðàâíåíèå îcîáåííîcòåé + // comparison of the features d := compareSURFDescriptors(vec, mvec, dist2, length); if (d < dist1) then begin // Íàéäåíà ëó÷øåå cîâïàäåíèå îcîáåííîcòåé + // Found a better match features dist2 := dist1; dist1 := d; neighbor := i; @@ -115,8 +118,8 @@ begin end; // Ôóíêöèÿ èùåò cîâïàäàþùèå ïàðû -procedure findPairs(const objectKeypoints: pCvSeq; const objectDescriptors: pCvSeq; const imageKeypoints: pCvSeq; - const imageDescriptors: pCvSeq; Var ptpairs: TArray); +// Function searches for matching pairs +procedure findPairs(const objectKeypoints: pCvSeq; const objectDescriptors: pCvSeq; const imageKeypoints: pCvSeq; const imageDescriptors: pCvSeq; Var ptpairs: TArray); var i: Integer; reader, kreader: TCvSeqReader; @@ -125,10 +128,12 @@ var nearest_neighbor: Integer; begin // Ócòàíîâêà íà÷àëüíîé îcîáåííîcòè îáúåêòà ðccïîçíàâàíèÿ + // Sets the initial features of object recognition cvStartReadSeq(objectKeypoints, @kreader); cvStartReadSeq(objectDescriptors, @reader); SetLength(ptpairs, 0); // Ïåðåáîð âcåõ îcîáåííîcòåòåé îáúåêòà + // Iterating through all features of the object for i := 0 to objectDescriptors.total - 1 do begin kp := pCvSURFPoint(kreader.ptr); @@ -136,10 +141,12 @@ begin CV_NEXT_SEQ_ELEM(kreader.seq.elem_size, kreader); CV_NEXT_SEQ_ELEM(reader.seq.elem_size, reader); // cðàâíåíèå òåêóùåé îcîáåííîcòè cî âcåìè îcîáåííîcòÿìè èç cöåíû + // comparison of the current features with all the features of the scene nearest_neighbor := naiveNearestNeighbor(descriptor, kp.laplacian, imageKeypoints, imageDescriptors); if (nearest_neighbor >= 0) then begin // Íàøëîcü cîâïàäåíèå îcîáåííîcòåé + // Match the features found SetLength(ptpairs, length(ptpairs) + 2); ptpairs[High(ptpairs) - 1] := i; ptpairs[High(ptpairs)] := nearest_neighbor; @@ -147,9 +154,9 @@ begin end; end; -// * Ãðóáîå íàõîæäåíèå ìåcòîïîëîæåíèÿ îáúåêòà * / -function locatePlanarObject(const objectKeypoints: pCvSeq; const objectDescriptors: pCvSeq; - const imageKeypoints: pCvSeq; const imageDescriptors: pCvSeq; const src_corners: TArray; +// Ãðóáîå íàõîæäåíèå ìåcòîïîëîæåíèÿ îáúåêòà +// Finding rough position of the object +function locatePlanarObject(const objectKeypoints: pCvSeq; const objectDescriptors: pCvSeq; const imageKeypoints: pCvSeq; const imageDescriptors: pCvSeq; const src_corners: TArray; dst_corners: TArray): Integer; var @@ -163,17 +170,19 @@ var begin _h := cvMat(3, 3, CV_64F, @h); - // Èùåì ïàðû îcîáåííîcòåé íà îáåèõ êàðòèíêàõ, êîòîðûå cîîòâåòcòâóþò - // äðóã äðóãó + // Èùåì ïàðû îcîáåííîcòåé íà îáåèõ êàðòèíêàõ, êîòîðûå cîîòâåòcòâóþò äðóã äðóãó + // We are looking for a pair of features on each image that correspond to each other findPairs(objectKeypoints, objectDescriptors, imageKeypoints, imageDescriptors, ptpairs); n := length(ptpairs) div 2; // Åcëè ïàð ìàëî, çíà÷èò íàäî âûõîäèòü – îáúåêò íå íàéäåí + // If found little pair, then have to go - object not found if (n < 4) then Exit(0); // Âûäåëÿåì ïàìÿòü SetLength(pt1, n); SetLength(pt2, n); // c÷èòûâàåì êîîðäèíàòû «îcîáûõ»òî÷åê + // read the coordinates of the "singular" points for i := 0 to n - 1 do begin pt1[i] := pCvSURFPoint(cvGetSeqElem(objectKeypoints, ptpairs[i * 2])).pt; @@ -181,14 +190,17 @@ begin end; // Ïî ïîëó÷åííûì âåêòîðàì cîçäà¸ì ìàòðèö + // Using computed vectors - creating a matrix _pt1 := cvMat(1, n, CV_32FC2, @pt1[0]); _pt2 := cvMat(1, n, CV_32FC2, @pt2[0]); - // Íàõîäèì òðàícôîðìàöèþ ìåæäó ècõîäíûì èçîáðàæåíèåì è c òåì, êîòîðîå - // èùåì + // Íàõîäèì òðàícôîðìàöèþ ìåæäó ècõîäíûì èçîáðàæåíèåì è c òåì, êîòîðîå èùåì + // Find the transformation between the original image and the fact that looking if (cvFindHomography(@_pt1, @_pt2, @_h, CV_RANSAC, 5) = 0) then Exit(0); // Ïî ïîëó÷åííîìó çíà÷åíèþ òðàícôîðìàöèè (â ìàòðèöó _h) íàõîäèì // êîîðäèíàòû ÷åòûð¸õóãîëüíèêà, õàðàêòåðèçóþùåãî îáúåêò + // Using the values transformation (in the matrix _h) find + // the coordinates of a quadrilateral, indicative of the object for i := 0 to 3 do begin x := src_corners[i].x; @@ -306,12 +318,14 @@ begin try initModule_nonfree; // Èíèöèàëèçàöèÿ ïàðàìåòðîâ + // initialization parameters object_filename := iif(ParamCount = 2, ParamStr(1), 'resource\box.png'); scene_filename := iif(ParamCount = 2, ParamStr(2), 'resource\box_in_scene.png'); storage := cvCreateMemStorage(0); cvNamedWindow('Object', 1); cvNamedWindow('Object Correspond', 1); // Çàãðóçêà èçîáðàæåíèé + // Loading Images _object := cvLoadImage(pcvChar(@object_filename[1]), CV_LOAD_IMAGE_GRAYSCALE); image := cvLoadImage(pcvChar(@scene_filename[1]), CV_LOAD_IMAGE_GRAYSCALE); @@ -322,24 +336,29 @@ begin Halt; end; // Ïåðåâîä â ãðàäàöèè cåðîãî + // Translation grayscale object_color := cvCreateImage(cvGetSize(_object), 8, 3); cvCvtColor(_object, object_color, CV_GRAY2BGR); - // Èíèöèàëèçàöèÿ còðóêòóðû CvSURFParams c ðàçìåðîì äåcêðèïòîðîâ â 128 - // ýëåìåíòîâ + // Èíèöèàëèçàöèÿ còðóêòóðû CvSURFParams c ðàçìåðîì äåcêðèïòîðîâ â 128 ýëåìåíòîâ + // Initialization of the structure CvSURFParams c size descriptors 128 items params := CvSURFParams(500, 1); - // Çccåêàåì âðåìÿ + // Çàcåêàåì âðåìÿ + // note the time tt := cvGetTickCount(); // Èùåì îcîáåííîcòè îáúåêòà ðccïîçíàâàíèÿ + // We are looking for particular object recognition cvExtractSURF(_object, nil, @objectKeypoints, @objectDescriptors, storage, params); WriteLn(Format('Object Descriptors: %d', [objectDescriptors.total])); // Èùåì îcîáåííîcòè cöåíû + // We are looking for particular scenes cvExtractSURF(image, nil, @imageKeypoints, @imageDescriptors, storage, params); WriteLn(Format('Image Descriptors: %d', [imageDescriptors.total])); // cêîëüêî ïîòðåáîâàëîcü âðåìåíè (Ó ìåíÿ 167 ìèëëè cåêóíä) + // how long it took (I 167 milliseconds) tt := cvGetTickCount() - tt; WriteLn(Format('Extraction time = %gms', [tt / (cvGetTickFrequency() * 1000)])); - // Ócòàíàâëèâàåì ãðàíèöû èçîáðàæåíèé, âíóòðè êîòîðûõ áóäóò cðàâíèâàòücÿ - // îcîáåííîcòè + // Ócòàíàâëèâàåì ãðàíèöû èçîáðàæåíèé, âíóòðè êîòîðûõ áóäóò cðàâíèâàòücÿ îcîáåííîcòè + // Set the image borders, within which features will be compared SetLength(src_corners, 4); src_corners[0] := cvPoint(0, 0); src_corners[1] := cvPoint(_object.width, 0); @@ -348,6 +367,8 @@ begin SetLength(dst_corners, 4); // cîçäàíèå äîïîëíèòåëüíîãî èçîáðàæåíèå (â í¸ì áóäåò cöåíà è îáúåêò) // Çàïócòèòå ïðèìåð è ïîéì¸òå î ÷¸ì ðå÷ü + // creation of an additional image (it will be a scene and object) + // Run the example and you will understand what I mean correspond := cvCreateImage(cvSize(image.width, _object.height + image.height), 8, 1); cvSetImageROI(correspond, cvRect(0, 0, _object.width, _object.height)); cvCopy(_object, correspond); @@ -355,10 +376,11 @@ begin cvCopy(image, correspond); cvResetImageROI(correspond); // Âûçûâàåì ôóíêöèþ, íàõîäÿùóþ îáúåêò íà ýêðàíå - if (locatePlanarObject(objectKeypoints, objectDescriptors, imageKeypoints, imageDescriptors, src_corners, - dst_corners) <> 0) then + // Call the function that retrieves the object on the screen + if (locatePlanarObject(objectKeypoints, objectDescriptors, imageKeypoints, imageDescriptors, src_corners, dst_corners) <> 0) then begin // Îáâîäèì íóæíûé ÷åòûð¸õóãîëüíèê + // Draw out the desired quadrangle for i := 0 to 3 do begin r1 := dst_corners[i mod 4]; @@ -366,24 +388,24 @@ begin cvLine(correspond, cvPoint(r1.x, r1.y + _object.height), cvPoint(r2.x, r2.y + _object.height), colors[8]); end; end; - // Åcëè â ýòîì ìåcòå âûâåcòè ðåçóëüòàò íà ýêðàí, òî ïîëó÷èòücÿ òî, ÷òî - // ïîêàçàíî íà ðècóíêå 23.3. + // Åcëè â ýòîì ìåcòå âûâåcòè ðåçóëüòàò íà ýêðàí, òî ïîëó÷èòücÿ òî, ÷òî ïîêàçàíî íà ðècóíêå 23.3. // cíîâà èùóòcÿ âcå cîâïàäàþùèå ïàðû îcîáåííîcòåé â îáåèõ êàðòèíêàõ + // again finds all the matching pairs of features in both pictures findPairs(objectKeypoints, objectDescriptors, imageKeypoints, imageDescriptors, ptpairs); // Ìåæäó ïàðàìè îcîáåííîcòåé íà ðècóíêå ïðîâîäÿòcÿ ïðÿìûå - + // Between pairs of features in the figure are held straight i := 0; While i < length(ptpairs) do begin _r1 := pCvSURFPoint(cvGetSeqElem(objectKeypoints, ptpairs[i])); _r2 := pCvSURFPoint(cvGetSeqElem(imageKeypoints, ptpairs[i + 1])); - cvLine(correspond, cvPointFrom32f(_r1.pt), cvPoint(cvRound(_r2.pt.x), cvRound(_r2.pt.y + _object.height)), - colors[8]); + cvLine(correspond, cvPointFrom32f(_r1.pt), cvPoint(cvRound(_r2.pt.x), cvRound(_r2.pt.y + _object.height)), colors[8]); i := i + 2; end; // Ðåçóëüòàò ìîæíî ïîcìîòðåòü íà ðècíóêå 23.4. cvShowImage('Object Correspond', correspond); // Âûäåëÿåì îcîáåííîcòèî îêðóæíîcòÿìè (Ðèc. 23.5) + // Highlight features of circles for i := 0 to objectKeypoints.total - 1 do begin r := pCvSURFPoint(cvGetSeqElem(objectKeypoints, i)); diff --git a/samples/LibDemo/cvExtractSURF/cv_ExtractSURF.dproj b/samples/LibDemo/cvExtractSURF/cv_ExtractSURF.dproj index caa12d6..d043115 100644 --- a/samples/LibDemo/cvExtractSURF/cv_ExtractSURF.dproj +++ b/samples/LibDemo/cvExtractSURF/cv_ExtractSURF.dproj @@ -7,7 +7,7 @@ 1 Console None - 15.2 + 15.3 Win32 diff --git a/samples/LibDemo/cvExtractSURF/cv_ExtractSURF2.dpr b/samples/LibDemo/cvExtractSURF/cv_ExtractSURF2.dpr index cced366..6432dde 100644 --- a/samples/LibDemo/cvExtractSURF/cv_ExtractSURF2.dpr +++ b/samples/LibDemo/cvExtractSURF/cv_ExtractSURF2.dpr @@ -21,9 +21,6 @@ // rights and limitations under the License. // *************************************************************** *) -// JCL_DEBUG_EXPERT_GENERATEJDBG OFF -// JCL_DEBUG_EXPERT_INSERTJDBG OFF -// JCL_DEBUG_EXPERT_DELETEMAPFILE OFF program cv_ExtractSURF; {$APPTYPE CONSOLE}