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,
2013-04-02 00:17:25 +02:00
core_c in '..\..\..\include\<5C> ore\core_c.pas' ,
Core. types_c in '..\..\..\include\<5C> ore\Core.types_c.pas' ,
highgui_c in '..\..\..\include\highgui\highgui_c.pas' ,
imgproc. types_c in '..\..\..\include\imgproc\imgproc.types_c.pas' ,
imgproc_c in '..\..\..\include\imgproc\imgproc_c.pas' ,
uLibName in '..\..\..\include\uLibName.pas' ,
types_c in '..\..\..\include\<5C> ore\types_c.pas' ;
2013-01-07 15:02:10 +01:00
const
2013-03-27 23:20:08 +01:00
filename = 'Resource\cat2.jpg' ;
2013-01-07 15:02:10 +01:00
Var
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
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
image : = cvLoadImage( filename) ;
WriteLn( Format( '[i] image: %s' , [ filename] ) ) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
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
begin
// <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
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
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
// <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ESC - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
break;
end ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cvReleaseImage( image) ;
cvReleaseImage( dst) ;
cvReleaseImage( dst2) ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
cvDestroyAllWindows;
end .