Delphi-OpenCV/samples/Sobel/cv_Sobel.dpr
Laex 43aca9437b [+] FaceDetect
[+] cvGetSubRect

[*] Changed the names of the projects

Signed-off-by: Laex <laex@bk.ru>
2013-03-28 02:28:02 +04:00

101 lines
2.4 KiB
ObjectPascal

// JCL_DEBUG_EXPERT_GENERATEJDBG OFF
// JCL_DEBUG_EXPERT_INSERTJDBG OFF
// JCL_DEBUG_EXPERT_DELETEMAPFILE OFF
program cv_Sobel;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
core_c in '..\..\include\ñore\core_c.pas',
Core.types_c in '..\..\include\ñ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',
LibName in '..\..\include\LibName.pas';
const
filename = 'Resource\cat2.jpg';
Var
xorder: Integer = 1;
xorder_max: Integer = 2;
yorder: Integer = 1;
yorder_max: Integer = 2;
// ôóíêöèÿ-îáðàáîò÷èê ïîëçóíêà -
// ïîðÿäîê ïðîèçâîäíîé ïî X
procedure myTrackbarXorder(pos: Integer); cdecl;
begin
xorder := pos;
end;
//
// ôóíêöèÿ-îáðàáîò÷èê ïîëçóíêà -
// ïîðÿäîê ïðîèçâîäíîé ïî 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
// ïîëó÷àåì êàðòèíêó
image := cvLoadImage(filename);
WriteLn(Format('[i] image: %s', [filename]));
// ñîçäà¸ì êàðòèíêè
dst := cvCreateImage(cvSize(image^.width, image^.height), IPL_DEPTH_16S, image^.nChannels);
dst2 := cvCreateImage(cvSize(image^.width, image^.height), image^.depth, image^.nChannels);
// îêíî äëÿ îòîáðàæåíèÿ êàðòèíêè
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
// ïðîâåðÿåì, ÷òîáû ïîðÿäîê ïðîèçâîäíûõ ïî X è Y áûë îòëè÷åí îò 0
if (xorder = 0) and (yorder = 0) then
begin
WriteLn('[i] Error: bad params for cvSobel() !');
cvZero(dst2);
end
else
begin
// ïðèìåíÿåì îïåðàòîð Ñîáåëÿ
cvSobel(image, dst, xorder, yorder, aperture);
// ïðåîáðàçóåì èçîáðàæåíèå ê 8-áèòíîìó
cvConvertScale(dst, dst2);
end;
// ïîêàçûâàåì êàðòèíêó
cvShowImage('original', image);
cvShowImage('sobel', dst2);
c := cvWaitKey(33);
if (c = 27) then
// åñëè íàæàòà ESC - âûõîäèì
break;
end;
// îñâîáîæäàåì ðåñóðñû
cvReleaseImage(image);
cvReleaseImage(dst);
cvReleaseImage(dst2);
// óäàëÿåì îêíà
cvDestroyAllWindows;
end.