2013-04-09 12:41:27 +02:00
( * / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// 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.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * )
2013-03-27 23:20:08 +01:00
// JCL_DEBUG_EXPERT_GENERATEJDBG OFF
// JCL_DEBUG_EXPERT_INSERTJDBG OFF
// JCL_DEBUG_EXPERT_DELETEMAPFILE OFF
program cv_Sobel;
2013-01-07 15:02:10 +01:00
{$APPTYPE CONSOLE}
{$R *.res}
uses
System. SysUtils,
2014-05-22 08:53:48 +02:00
opencv. highgui_c,
opencv. core_c,
opencv. core. types_c,
opencv. imgproc_c,
opencv. imgproc. types_c,
2014-05-20 07:10:43 +02:00
uResourcePaths;
2013-01-07 15:02:10 +01:00
const
2014-05-20 07:10:43 +02:00
filename = cResourceMedia + 'cat2.jpg' ;
2013-01-07 15:02:10 +01:00
2013-05-21 10:53:30 +02:00
var
2013-01-07 15:02:10 +01:00
xorder: Integer = 1 ;
xorder_max: Integer = 2 ;
yorder: Integer = 1 ;
yorder_max: Integer = 2 ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -<2D> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> X
procedure myTrackbarXorder( pos: Integer ) ; cdecl ;
begin
xorder : = pos;
end ;
//
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -<2D> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> -
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> Y
procedure myTrackbarYorder( pos: Integer ) ; cdecl ;
begin
yorder : = pos;
end ;
Var
image: pIplImage = nil ;
dst: pIplImage = nil ;
dst2: pIplImage = nil ;
aperture: Integer = 3 ;
c: Integer ;
begin
2013-04-05 13:36:47 +02:00
try
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
image : = cvLoadImage( filename) ;
WriteLn( Format( '[i] image: %s' , [ filename] ) ) ;
2013-04-18 08:34:16 +02:00
// c<> <63> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2013-04-05 13:36:47 +02:00
dst : = cvCreateImage( cvSize( image^ . width, image^ . height) , IPL_DEPTH_16S, image^ . nChannels) ;
dst2 : = cvCreateImage( cvSize( image^ . width, image^ . height) , image^ . depth, image^ . nChannels) ;
// <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cvNamedWindow( 'original' , CV_WINDOW_AUTOSIZE) ;
cvNamedWindow( 'sobel' , CV_WINDOW_AUTOSIZE) ;
cvCreateTrackbar( 'xorder' , 'original' , @ xorder, xorder_max, myTrackbarXorder) ;
cvCreateTrackbar( 'yorder' , 'original' , @ yorder, yorder_max, myTrackbarYorder) ;
while True do
2013-01-07 15:02:10 +01:00
begin
2013-04-05 13:36:47 +02:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> X <20> Y <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 0
if ( xorder = 0 ) and ( yorder = 0 ) then
begin
WriteLn( '[i] Error: bad params for cvSobel() !' ) ;
cvZero( dst2) ;
end
else
begin
2013-04-18 08:34:16 +02:00
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> c<> <63> <EFBFBD> <EFBFBD> <EFBFBD>
2013-04-05 13:36:47 +02:00
cvSobel( image, dst, xorder, yorder, aperture) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> 8-<2D> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cvConvertScale( dst, dst2) ;
end ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cvShowImage( 'original' , image) ;
cvShowImage( 'sobel' , dst2) ;
c : = cvWaitKey( 3 3 ) ;
if ( c = 2 7 ) then
2013-04-18 08:34:16 +02:00
// <20> c<EFBFBD> <63> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ESC - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2013-04-05 13:36:47 +02:00
break;
2013-01-07 15:02:10 +01:00
2013-04-05 13:36:47 +02:00
end ;
2013-01-07 15:02:10 +01:00
2013-04-18 08:34:16 +02:00
// <20> c<EFBFBD> <63> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> c<EFBFBD> <63> c<EFBFBD>
2013-04-05 13:36:47 +02:00
cvReleaseImage( image) ;
cvReleaseImage( dst) ;
cvReleaseImage( dst2) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
cvDestroyAllWindows;
except
on E: Exception do
WriteLn( E. ClassName, ': ' , E. Message ) ;
2013-01-07 15:02:10 +01:00
end ;
end .