mirror of
https://github.com/Laex/Delphi-OpenCV.git
synced 2024-11-15 07:45:53 +01:00
[*] Fixed CameraCalibrate.dpr
[+] Add samples/MultiDemo/mmdt/mmdt.dpr Signed-off-by: Laex <laex@bk.ru>
This commit is contained in:
parent
017d275999
commit
150e0780f7
2
.gitignore
vendored
2
.gitignore
vendored
@ -21,3 +21,5 @@ __history
|
||||
*.jdbg
|
||||
/samples/Work
|
||||
*.map
|
||||
|
||||
*.log
|
||||
|
@ -315,9 +315,11 @@ function cvWaitKey(delay: Integer = 0): Integer; cdecl;
|
||||
* Working with Video Files and Cameras *
|
||||
*************************************************************************************** *)
|
||||
|
||||
(* "black box" capture structure *)
|
||||
type
|
||||
TCvCapture = Integer;
|
||||
(* "black box" capture structure *)
|
||||
TCvCapture = packed record
|
||||
end;
|
||||
|
||||
pCvCapture = ^TCvCapture;
|
||||
|
||||
(* start capturing frames from video file *)
|
||||
@ -372,6 +374,7 @@ function cvCreateCameraCapture(index: Longint): pCvCapture; cdecl;
|
||||
function cvQueryFrame(capture: pCvCapture): pIplImage; cdecl;
|
||||
|
||||
(* stop capturing/reading and free resources *)
|
||||
// CVAPI(void) cvReleaseCapture( CvCapture** capture );
|
||||
procedure cvReleaseCapture(Var capture: pCvCapture); cdecl;
|
||||
|
||||
// modes of the controlling registers (can be: auto; manual; auto single push; absolute Latter allowed with any other mode)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -53,7 +53,7 @@ Var
|
||||
|
||||
board_n: Integer;
|
||||
board_sz: TCvSize;
|
||||
capture: pCvCapture;
|
||||
capture: pCvCapture = nil;
|
||||
|
||||
image_points: pCvMat;
|
||||
object_points: pCvMat;
|
||||
@ -175,10 +175,17 @@ begin
|
||||
if (c = 27) then
|
||||
begin
|
||||
// îñâîáîæäàåì ðåñóðñû
|
||||
cvReleaseImage(mapx);
|
||||
cvReleaseImage(mapy);
|
||||
// cvReleaseImage(mapx); - ýòà åùå íóëåâàÿ
|
||||
// cvReleaseImage(mapy); - ýòà åùå íóëåâàÿ
|
||||
cvReleaseImage(gray_image);
|
||||
cvReleaseImage(image);
|
||||
// cvReleaseImage(image); - ýòîãî äåëàòü íåëüçÿ
|
||||
// ñì. http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=cvqueryframe#IplImage*%20cvQueryFrame%28CvCapture*%20capture%29
|
||||
// Note
|
||||
// OpenCV 1.x functions cvRetrieveFrame and cv.RetrieveFrame return image
|
||||
// stored inside the video capturing structure. It is not allowed to modify
|
||||
// or release the image! You can copy the frame using cvCloneImage()
|
||||
// and then do whatever you want with the copy.
|
||||
//
|
||||
cvReleaseMat(object_points);
|
||||
cvReleaseMat(image_points);
|
||||
cvReleaseMat(point_counts);
|
||||
@ -304,7 +311,6 @@ begin
|
||||
cvReleaseImage(mapx);
|
||||
cvReleaseImage(mapy);
|
||||
cvReleaseImage(gray_image);
|
||||
cvReleaseImage(image);
|
||||
cvReleaseMat(intrinsic_matrix);
|
||||
cvReleaseMat(distortion_coeffs);
|
||||
cvReleaseMat(object_points2);
|
||||
|
516
samples/MultiDemo/mmdt/mmdt.dpr
Normal file
516
samples/MultiDemo/mmdt/mmdt.dpr
Normal file
@ -0,0 +1,516 @@
|
||||
(* /*****************************************************************
|
||||
// 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.
|
||||
// ***************************************************************
|
||||
// Original file:
|
||||
// http://vidikon.com/download/multimd.zip
|
||||
// http://blog.vidikon.com/?p=447
|
||||
// *************************************************************** *)
|
||||
|
||||
// JCL_DEBUG_EXPERT_GENERATEJDBG OFF
|
||||
// JCL_DEBUG_EXPERT_INSERTJDBG OFF
|
||||
// JCL_DEBUG_EXPERT_DELETEMAPFILE OFF
|
||||
program mmdt;
|
||||
|
||||
{$APPTYPE CONSOLE}
|
||||
{$POINTERMATH ON}
|
||||
{$R *.res}
|
||||
|
||||
uses
|
||||
System.SysUtils,
|
||||
Winapi.Windows,
|
||||
System.Generics.Collections,
|
||||
uLibName in '..\..\..\include\uLibName.pas',
|
||||
highgui_c in '..\..\..\include\highgui\highgui_c.pas',
|
||||
core_c in '..\..\..\include\ñore\core_c.pas',
|
||||
Core.types_c in '..\..\..\include\ñore\Core.types_c.pas',
|
||||
imgproc.types_c in '..\..\..\include\imgproc\imgproc.types_c.pas',
|
||||
imgproc_c in '..\..\..\include\imgproc\imgproc_c.pas',
|
||||
legacy in '..\..\..\include\legacy\legacy.pas',
|
||||
calib3d in '..\..\..\include\calib3d\calib3d.pas',
|
||||
imgproc in '..\..\..\include\imgproc\imgproc.pas',
|
||||
haar in '..\..\..\include\objdetect\haar.pas',
|
||||
objdetect in '..\..\..\include\objdetect\objdetect.pas',
|
||||
tracking in '..\..\..\include\video\tracking.pas',
|
||||
Core in '..\..\..\include\ñore\core.pas',
|
||||
nonfree in '..\..\..\include\nonfree\nonfree.pas',
|
||||
compat in '..\..\..\include\legacy\compat.pas',
|
||||
tracking_c in '..\..\..\include\video\tracking_c.pas';
|
||||
|
||||
const
|
||||
MAX_CAMERA = 10;
|
||||
_MAX_TEXT = 100;
|
||||
MAX_JPG_CAM = 100000;
|
||||
CLOCKS_PER_SEC = 1000;
|
||||
|
||||
Var
|
||||
all_camera: Integer = 0;
|
||||
capture: array [0 .. MAX_CAMERA - 1] of pCvCapture;
|
||||
allcam: Integer;
|
||||
Threadvar
|
||||
// thread
|
||||
NumMultiThread: Integer;
|
||||
Var
|
||||
UnloadCapture, WindowCapture: array [0 .. MAX_CAMERA - 1] of Integer;
|
||||
|
||||
MHI_DURATION: double = 1;
|
||||
MAX_TIME_DELTA: double = 0.5;
|
||||
MIN_TIME_DELTA: double = 0.05;
|
||||
// number of cyclic frame buffer used for motion detection
|
||||
// (should, probably, depend on FPS)
|
||||
N: Integer = 4;
|
||||
|
||||
// ring image buffer
|
||||
buf: array [0 .. MAX_CAMERA - 1] of ppIplImage;
|
||||
last: array [0 .. MAX_CAMERA - 1] of Integer;
|
||||
// temporary images
|
||||
mhi: array [0 .. MAX_CAMERA - 1] of pIplImage; // MHI
|
||||
orient: array [0 .. MAX_CAMERA - 1] of pIplImage; // orientation
|
||||
mask: array [0 .. MAX_CAMERA - 1] of pIplImage; // valid orientation mask
|
||||
segmask: array [0 .. MAX_CAMERA - 1] of pIplImage; // motion segmentation map
|
||||
storage: array [0 .. MAX_CAMERA - 1] of pCvMemStorage; // temporary storage
|
||||
|
||||
MINMSEC, MAXMSEC: Integer;
|
||||
PATHJPG: AnsiString;
|
||||
OUTJPG: Integer;
|
||||
PATHAVI: AnsiString;
|
||||
OUTAVI: Integer;
|
||||
PATHLOG: AnsiString;
|
||||
OUTLOG: Integer;
|
||||
|
||||
WriteCam: array [0 .. MAX_CAMERA - 1] of Integer;
|
||||
|
||||
ww: Integer = 0;
|
||||
i: Integer;
|
||||
lpT: DWORD;
|
||||
h: tHANDLE;
|
||||
str: String; // [21];
|
||||
k: Integer = 0;
|
||||
|
||||
// parameters:
|
||||
// img - input video frame
|
||||
// dst - resultant motion picture
|
||||
// args - optional parameters
|
||||
// camera - num camera
|
||||
function update_mhi(img: pIplImage; dst: pIplImage; diff_threshold, camera: Integer): Integer;
|
||||
Var
|
||||
timestamp: double; // get current time in seconds
|
||||
size: TCvSize; // get current frame size
|
||||
i, idx1, idx2: Integer;
|
||||
silh: pIplImage;
|
||||
seq: pCvSeq;
|
||||
comp_rect: TCvRect;
|
||||
count, angle: double;
|
||||
center: TCvPoint;
|
||||
magnitude: double;
|
||||
color: TCvScalar;
|
||||
cv1, cv2: TCvPoint;
|
||||
DetectZone: Integer;
|
||||
jj, i1, j1, xx, yy: Integer;
|
||||
begin
|
||||
timestamp := GetTickCount / CLOCKS_PER_SEC; // get current time in seconds
|
||||
size := CvSize(img^.width, img^.height); // get current frame size
|
||||
idx1 := last[camera];
|
||||
DetectZone := 0;
|
||||
// allocate images at the beginning or
|
||||
// reallocate them if the frame size is changed
|
||||
if not Assigned(mhi[camera]) or (mhi[camera].width <> size.width) or (mhi[camera].height <> size.height) then
|
||||
begin
|
||||
if (buf[camera] = nil) then
|
||||
buf[camera] := AllocMem(N * sizeof(pIplImage));
|
||||
|
||||
for i := 0 to N - 1 do
|
||||
begin
|
||||
cvReleaseImage(buf[camera][i]);
|
||||
buf[camera][i] := cvCreateImage(size, IPL_DEPTH_8U, 1);
|
||||
cvZero(buf[camera][i]);
|
||||
end;
|
||||
cvReleaseImage(mhi[camera]);
|
||||
cvReleaseImage(orient[camera]);
|
||||
cvReleaseImage(segmask[camera]);
|
||||
cvReleaseImage(mask[camera]);
|
||||
|
||||
mhi[camera] := cvCreateImage(size, IPL_DEPTH_32F, 1);
|
||||
cvZero(mhi[camera]); // clear MHI at the beginning
|
||||
orient[camera] := cvCreateImage(size, IPL_DEPTH_32F, 1);
|
||||
segmask[camera] := cvCreateImage(size, IPL_DEPTH_32F, 1);
|
||||
mask[camera] := cvCreateImage(size, IPL_DEPTH_8U, 1);
|
||||
end;
|
||||
|
||||
cvCvtColor(img, buf[camera][last[camera]], CV_BGR2GRAY); // convert frame to grayscale
|
||||
|
||||
idx2 := (last[camera] + 1) mod N; // index of (last - (N-1))th frame
|
||||
last[camera] := idx2;
|
||||
|
||||
silh := buf[camera][idx2];
|
||||
cvAbsDiff(buf[camera][idx1], buf[camera][idx2], silh); // get difference between frames
|
||||
|
||||
cvThreshold(silh, silh, diff_threshold, 1, CV_THRESH_BINARY); // and threshold it
|
||||
cvUpdateMotionHistory(silh, mhi[camera], timestamp, MHI_DURATION); // update MHI
|
||||
|
||||
// convert MHI to blue 8u image
|
||||
cvCvtScale(mhi[camera], mask[camera], 255. / MHI_DURATION, (MHI_DURATION - timestamp) * 255. / MHI_DURATION);
|
||||
cvZero(dst);
|
||||
// cvCvtPlaneToPix( mask[camera], 0, 0, 0, dst );
|
||||
cvMerge(mask[camera], 0, 0, 0, dst);
|
||||
|
||||
// calculate motion gradient orientation and valid orientation mask
|
||||
cvCalcMotionGradient(mhi[camera], mask[camera], orient[camera], MAX_TIME_DELTA, MIN_TIME_DELTA, 3);
|
||||
|
||||
if not Assigned(storage[camera]) then
|
||||
storage[camera] := cvCreateMemStorage(0)
|
||||
else
|
||||
cvClearMemStorage(storage[camera]);
|
||||
|
||||
// segment motion: get sequence of motion components
|
||||
// segmask is marked motion components map. It is not used further
|
||||
seq := cvSegmentMotion(mhi[camera], segmask[camera], storage[camera], timestamp, MAX_TIME_DELTA);
|
||||
|
||||
// iterate through the motion components,
|
||||
// One more iteration (i = -1) corresponds to the whole image (global motion)
|
||||
// uchar* ptr;
|
||||
// ptr := (uchar*) (dst^.imageData );
|
||||
jj := 0;
|
||||
for i := -1 to seq^.total - 1 do
|
||||
begin
|
||||
if (i < 0) then
|
||||
begin // case of the whole image
|
||||
comp_rect := CvRect(0, 0, size.width, size.height);
|
||||
color := CV_RGB(255, 255, 255);
|
||||
magnitude := 100;
|
||||
end
|
||||
else
|
||||
begin // i-th motion component
|
||||
comp_rect := pCvConnectedComp(cvGetSeqElem(seq, i))^.rect;
|
||||
if (comp_rect.width + comp_rect.height < 50) then // reject very small components
|
||||
continue;
|
||||
|
||||
color := CV_RGB(255, 0, 0);
|
||||
magnitude := 30;
|
||||
end;
|
||||
|
||||
if (i = -1) then
|
||||
continue;
|
||||
Inc(jj);
|
||||
Inc(DetectZone);
|
||||
|
||||
// select component ROI
|
||||
cvSetImageROI(silh, comp_rect);
|
||||
cvSetImageROI(mhi[camera], comp_rect);
|
||||
cvSetImageROI(orient[camera], comp_rect);
|
||||
cvSetImageROI(mask[camera], comp_rect);
|
||||
|
||||
// calculate orientation
|
||||
angle := cvCalcGlobalOrientation(orient[camera], mask[camera], mhi[camera], timestamp, MHI_DURATION);
|
||||
angle := 360.0 - angle; // adjust for images with top-left origin
|
||||
|
||||
count := cvNorm(silh, 0, CV_L1, 0); // calculate number of points within silhouette ROI
|
||||
|
||||
cvResetImageROI(mhi[camera]);
|
||||
cvResetImageROI(orient[camera]);
|
||||
cvResetImageROI(mask[camera]);
|
||||
cvResetImageROI(silh);
|
||||
|
||||
// check for the case of little motion
|
||||
if (count < comp_rect.width * comp_rect.height * 0.05) then
|
||||
continue;
|
||||
|
||||
// draw a clock with arrow indicating the direction
|
||||
center := CvPoint((comp_rect.x + comp_rect.width div 2), (comp_rect.y + comp_rect.height div 2));
|
||||
|
||||
cvCircle(dst, center, cvRound(magnitude * 1.2), color, 3, CV_AA, 0);
|
||||
cvLine(dst, center, CvPoint(cvRound(center.x + magnitude * cos(angle * CV_PI / 180)),
|
||||
cvRound(center.y - magnitude * sin(angle * CV_PI / 180))), color, 3, CV_AA, 0);
|
||||
|
||||
xx := comp_rect.width;
|
||||
if (xx > comp_rect.height) then
|
||||
xx := comp_rect.height;
|
||||
|
||||
cv1.x := comp_rect.x;
|
||||
cv1.y := comp_rect.y;
|
||||
cv2.x := comp_rect.x + comp_rect.width;
|
||||
cv2.y := comp_rect.y + comp_rect.height;
|
||||
cvRectangle(img, cv1, cv2, color, 3, CV_AA, 0);
|
||||
cvLine(img, center, CvPoint(cvRound(center.x + (xx / 2) * cos(angle * CV_PI / 180)),
|
||||
cvRound(center.y - (xx / 2) * sin(angle * CV_PI / 180))), color, 5, CV_AA, 0);
|
||||
end;
|
||||
Result := DetectZone;
|
||||
end;
|
||||
|
||||
function MultiThread(lpParameter: LPVOID): DWORD; stdcall;
|
||||
Var
|
||||
localNumMultiThread: Integer;
|
||||
localWindowCapture: Integer;
|
||||
JPG_CAM: Integer;
|
||||
|
||||
motion: pIplImage;
|
||||
image1: pIplImage;
|
||||
// buf3: String;
|
||||
buf1, buf2, buf: AnsiString;
|
||||
cadr: Longint;
|
||||
|
||||
detect: Integer;
|
||||
detect1: Integer;
|
||||
waitkey: Integer;
|
||||
cvVideoWriter: pCvVideoWriter;
|
||||
logpolar_frame: pIplImage;
|
||||
image: pIplImage;
|
||||
F: TextFile;
|
||||
ii: LONG;
|
||||
|
||||
begin
|
||||
localNumMultiThread := pInteger(lpParameter)^;
|
||||
localWindowCapture := WindowCapture[localNumMultiThread];
|
||||
JPG_CAM := 0;
|
||||
|
||||
capture[localNumMultiThread] := cvCreateCameraCapture(localNumMultiThread);
|
||||
|
||||
// Work with camera
|
||||
if Assigned(capture[localNumMultiThread]) then
|
||||
begin
|
||||
motion := nil;
|
||||
image1 := nil;
|
||||
cadr := 0;
|
||||
if (OUTLOG <> 0) then
|
||||
begin
|
||||
buf1 := PATHLOG + Format('cam%d.log', [localNumMultiThread]);
|
||||
AssignFile(F, buf1);
|
||||
Rewrite(F);
|
||||
end;
|
||||
buf := Format('Camera #%d', [localNumMultiThread]);
|
||||
cvNamedWindow(pCvChar(@buf[1]), 1);
|
||||
detect := 0;
|
||||
waitkey := MINMSEC;
|
||||
// Create avi file
|
||||
cvVideoWriter := nil;
|
||||
while True do
|
||||
begin
|
||||
if not Assigned(capture[localNumMultiThread]) then
|
||||
break;
|
||||
image := cvQueryFrame(capture[localNumMultiThread]);
|
||||
if not Assigned(image) then
|
||||
break;
|
||||
|
||||
if not Assigned(motion) then
|
||||
begin
|
||||
motion := cvCreateImage(CvSize(image^.width, image^.height), 8, 3);
|
||||
cvZero(motion);
|
||||
motion^.origin := image^.origin;
|
||||
end;
|
||||
if not Assigned(image1) then
|
||||
begin
|
||||
image1 := cvCreateImage(CvSize(image^.width, image^.height), 8, 3);
|
||||
cvZero(image1);
|
||||
image1^.origin := image1^.origin;
|
||||
end;
|
||||
cvCopy(image, image1);
|
||||
if (OUTAVI <> 0) then
|
||||
begin
|
||||
if not Assigned(cvVideoWriter) then
|
||||
begin
|
||||
buf1 := PATHAVI + Format('cam%d.avi', [localNumMultiThread]);
|
||||
cvVideoWriter := cvCreateVideoWriter(pCvChar(@buf1[1]), CV_FOURCC('X', 'V', 'I', 'D'), 15,
|
||||
CvSize(image^.width div 2, image^.height div 2));
|
||||
logpolar_frame := cvCreateImage(CvSize(image^.width div 2, image^.height div 2), IPL_DEPTH_8U, 3);
|
||||
cvZero(logpolar_frame);
|
||||
logpolar_frame^.origin := logpolar_frame^.origin;
|
||||
// I don't why, but another's not work
|
||||
// my be cvLogPolar made some different param in IplImage
|
||||
cvLogPolar(image1, logpolar_frame, cvPoint2D32f(image1^.width div 2, image1^.height div 2), 40,
|
||||
CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS);
|
||||
end;
|
||||
end;
|
||||
detect1 := update_mhi(image, motion, 30, localNumMultiThread);
|
||||
if (detect > 0) then
|
||||
Dec(detect);
|
||||
if (detect1 > 0) then
|
||||
detect := 5;
|
||||
if (detect > 0) then
|
||||
waitkey := MINMSEC
|
||||
else
|
||||
waitkey := MAXMSEC;
|
||||
if (localWindowCapture <> WindowCapture[localNumMultiThread]) then
|
||||
begin
|
||||
if (localWindowCapture > 0) then
|
||||
cvDestroyWindow(pCvChar(@buf[1]))
|
||||
else
|
||||
cvNamedWindow(pCvChar(@buf[1]), 1);
|
||||
localWindowCapture := WindowCapture[localNumMultiThread];
|
||||
end;
|
||||
if (localWindowCapture <> 0) then
|
||||
cvShowImage(pCvChar(@buf[1]), image);
|
||||
if (detect > 0) and (OUTJPG <> 0) then
|
||||
begin
|
||||
buf1 := PATHJPG + Format('cam%dn', [localNumMultiThread]);
|
||||
ii := JPG_CAM + 1;
|
||||
repeat
|
||||
buf2 := buf1 + Format('%d.jpg', [ii]);
|
||||
ii := ii + 1;
|
||||
until not FileExists(buf2);
|
||||
cvSaveImage(pCvChar(@buf2[1]), image1);
|
||||
end;
|
||||
if (detect > 0) then
|
||||
begin
|
||||
if (OUTAVI <> 0) then
|
||||
begin
|
||||
if not Assigned(logpolar_frame) then
|
||||
logpolar_frame := cvCreateImage(CvSize(image1^.width div 2, image1^.height div 2), image1^.depth,
|
||||
image1^.nChannels);
|
||||
cvResize(image1, logpolar_frame, 2);
|
||||
cvWriteFrame(cvVideoWriter, logpolar_frame);
|
||||
end;
|
||||
if (OUTLOG <> 0) then
|
||||
begin
|
||||
WriteLn(F, Format('cadr #%d', [cadr]));
|
||||
cadr := cadr + 1;
|
||||
end;
|
||||
end;
|
||||
cvWaitKey(waitkey);
|
||||
if (UnloadCapture[localNumMultiThread] = 0) then
|
||||
break;
|
||||
// printf('%d...',localNumMultiThread);
|
||||
// WriteCam[localNumMultiThread]:=1;
|
||||
end;
|
||||
cvReleaseCapture(capture[localNumMultiThread]);
|
||||
if (localWindowCapture <> 0) then
|
||||
cvDestroyWindow(pCvChar(@buf[1]));
|
||||
cvReleaseVideoWriter(cvVideoWriter);
|
||||
end;
|
||||
if (OUTLOG <> 0) then
|
||||
CloseFile(F);
|
||||
UnloadCapture[localNumMultiThread] := -1;
|
||||
Result := 0;
|
||||
end;
|
||||
|
||||
procedure help;
|
||||
begin
|
||||
WriteLn;
|
||||
WriteLn('Commands:');
|
||||
WriteLn('exit - exit program');
|
||||
WriteLn('help - this help');
|
||||
WriteLn('winon - windows on');
|
||||
WriteLn('winoff - windows off');
|
||||
end;
|
||||
|
||||
begin
|
||||
try
|
||||
// Params
|
||||
allcam := 2;
|
||||
MINMSEC := 200;
|
||||
MAXMSEC := 1000;
|
||||
PATHJPG := 'Result\';
|
||||
PATHAVI := 'Result\';
|
||||
PATHLOG := 'Result\';
|
||||
|
||||
ww := 1; // WINDOWS ON
|
||||
OUTJPG := 1; // OUTJPG ON
|
||||
OUTAVI := 1; // OUTAVI ON
|
||||
OUTLOG := 0; // OUTLOG ON
|
||||
// init for detect
|
||||
FillChar(capture, sizeof(capture), 0);
|
||||
FillChar(buf, sizeof(capture), 0);
|
||||
FillChar(last, sizeof(last), 0);
|
||||
FillChar(mhi, sizeof(mhi), 0);
|
||||
FillChar(orient, sizeof(orient), 0);
|
||||
FillChar(mask, sizeof(mask), 0);
|
||||
FillChar(segmask, sizeof(segmask), 0);
|
||||
FillChar(storage, sizeof(storage), 0);
|
||||
FillChar(WriteCam, sizeof(WriteCam), 0);
|
||||
// Search camera divice
|
||||
WriteLn('Searching');
|
||||
for i := 0 to allcam - 1 do
|
||||
begin
|
||||
Write('.');
|
||||
capture[i] := nil;
|
||||
capture[i] := cvCreateCameraCapture(i);
|
||||
UnloadCapture[i] := 0;
|
||||
if not Assigned(capture[i]) then
|
||||
continue;
|
||||
UnloadCapture[i] := 1;
|
||||
// WindowCapture[i] := ww;
|
||||
Inc(all_camera);
|
||||
cvReleaseCapture(capture[i]);
|
||||
end;
|
||||
WriteLn(#13#10'All camera:=', all_camera);
|
||||
if (allcam = 0) then
|
||||
begin
|
||||
WriteLn('Error with camera! Sorry...');
|
||||
Sleep(5000);
|
||||
Halt;
|
||||
end;
|
||||
|
||||
// Create threads for camera
|
||||
for i := 0 to all_camera - 1 do
|
||||
begin
|
||||
if (UnloadCapture[i] = 0) then
|
||||
continue;
|
||||
WriteLn('Create thread fo cam # ', i);
|
||||
NumMultiThread := i;
|
||||
h := CreateThread(NiL, 0, @MultiThread, @NumMultiThread, 0, lpT);
|
||||
Sleep(100);
|
||||
CloseHandle(h);
|
||||
end;
|
||||
help;
|
||||
// Go in to command interpretator
|
||||
Sleep(1000);
|
||||
while True do
|
||||
begin
|
||||
Write('MMDT# ');
|
||||
Readln(str);
|
||||
k := 0;
|
||||
if (SameText(str, 'exit')) then
|
||||
break;
|
||||
if (SameText(str, 'help')) then
|
||||
help;
|
||||
if (SameText(str, 'winon')) then
|
||||
begin
|
||||
for i := 0 to allcam - 1 do
|
||||
WindowCapture[i] := 1;
|
||||
k := 1;
|
||||
end;
|
||||
if (SameText(str, 'winoff')) then
|
||||
begin
|
||||
for i := 0 to allcam - 1 do
|
||||
WindowCapture[i] := 0;
|
||||
k := 1;
|
||||
end;
|
||||
if (k = 0) then
|
||||
WriteLn('Unknown command');
|
||||
end;
|
||||
|
||||
// Delete Captures
|
||||
if (all_camera > 0) then
|
||||
for i := 0 to all_camera - 1 do
|
||||
if Assigned(capture[i]) then
|
||||
begin
|
||||
// cvReleaseCapture( &capture[i] );
|
||||
UnloadCapture[i] := 0;
|
||||
repeat
|
||||
Sleep(100);
|
||||
until (UnloadCapture[i] = -1);
|
||||
end;
|
||||
|
||||
except
|
||||
on E: Exception do
|
||||
WriteLn(E.ClassName, ': ', E.Message);
|
||||
end;
|
||||
|
||||
end.
|
163
samples/MultiDemo/mmdt/mmdt.dproj
Normal file
163
samples/MultiDemo/mmdt/mmdt.dproj
Normal file
@ -0,0 +1,163 @@
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<ProjectGuid>{CED30735-D407-40C5-86FA-2E9039D3603A}</ProjectGuid>
|
||||
<MainSource>mmdt.dpr</MainSource>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
<TargetedPlatforms>1</TargetedPlatforms>
|
||||
<AppType>Console</AppType>
|
||||
<FrameworkType>None</FrameworkType>
|
||||
<ProjectVersion>14.4</ProjectVersion>
|
||||
<Platform Condition="'$(Platform)'==''">Win32</Platform>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
|
||||
<Base_Win32>true</Base_Win32>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
|
||||
<Cfg_1>true</Cfg_1>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<CfgParent>Base</CfgParent>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
|
||||
<Cfg_2_Win32>true</Cfg_2_Win32>
|
||||
<CfgParent>Cfg_2</CfgParent>
|
||||
<Cfg_2>true</Cfg_2>
|
||||
<Base>true</Base>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base)'!=''">
|
||||
<DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
|
||||
<DCC_ExeOutput>..\..\..\bin\</DCC_ExeOutput>
|
||||
<DCC_ImageBase>00400000</DCC_ImageBase>
|
||||
<DCC_F>false</DCC_F>
|
||||
<Manifest_File>None</Manifest_File>
|
||||
<VerInfo_Locale>1049</VerInfo_Locale>
|
||||
<DCC_S>false</DCC_S>
|
||||
<DCC_K>false</DCC_K>
|
||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=;CFBundleDisplayName=;CFBundleIdentifier=;CFBundleVersion=;CFBundlePackageType=;CFBundleSignature=;CFBundleAllowMixedLocalizations=;CFBundleExecutable=</VerInfo_Keys>
|
||||
<DCC_N>false</DCC_N>
|
||||
<DCC_E>false</DCC_E>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Base_Win32)'!=''">
|
||||
<DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_1)'!=''">
|
||||
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
|
||||
<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
|
||||
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
|
||||
<DCC_DebugInformation>false</DCC_DebugInformation>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2)'!=''">
|
||||
<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
|
||||
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
|
||||
<DCC_Optimize>false</DCC_Optimize>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
|
||||
<Manifest_File>None</Manifest_File>
|
||||
<VerInfo_Locale>1033</VerInfo_Locale>
|
||||
<VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<DelphiCompile Include="$(MainSource)">
|
||||
<MainSource>MainSource</MainSource>
|
||||
</DelphiCompile>
|
||||
<DCCReference Include="..\..\..\include\uLibName.pas"/>
|
||||
<DCCReference Include="..\..\..\include\highgui\highgui_c.pas"/>
|
||||
<DCCReference Include="..\..\..\include\сore\core_c.pas"/>
|
||||
<DCCReference Include="..\..\..\include\сore\Core.types_c.pas"/>
|
||||
<DCCReference Include="..\..\..\include\imgproc\imgproc.types_c.pas"/>
|
||||
<DCCReference Include="..\..\..\include\imgproc\imgproc_c.pas"/>
|
||||
<DCCReference Include="..\..\..\include\legacy\legacy.pas"/>
|
||||
<DCCReference Include="..\..\..\include\calib3d\calib3d.pas"/>
|
||||
<DCCReference Include="..\..\..\include\imgproc\imgproc.pas"/>
|
||||
<DCCReference Include="..\..\..\include\objdetect\haar.pas"/>
|
||||
<DCCReference Include="..\..\..\include\objdetect\objdetect.pas"/>
|
||||
<DCCReference Include="..\..\..\include\video\tracking.pas"/>
|
||||
<DCCReference Include="..\..\..\include\сore\core.pas"/>
|
||||
<DCCReference Include="..\..\..\include\nonfree\nonfree.pas"/>
|
||||
<DCCReference Include="..\..\..\include\legacy\compat.pas"/>
|
||||
<DCCReference Include="..\..\..\include\video\tracking_c.pas"/>
|
||||
<BuildConfiguration Include="Debug">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Base">
|
||||
<Key>Base</Key>
|
||||
</BuildConfiguration>
|
||||
<BuildConfiguration Include="Release">
|
||||
<Key>Cfg_1</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
</BuildConfiguration>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
|
||||
<Borland.ProjectType/>
|
||||
<BorlandProject>
|
||||
<Delphi.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">mmdt.dpr</Source>
|
||||
</Source>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1049</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1251</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"/>
|
||||
<VersionInfoKeys Name="FileDescription"/>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"/>
|
||||
<VersionInfoKeys Name="LegalCopyright"/>
|
||||
<VersionInfoKeys Name="LegalTrademarks"/>
|
||||
<VersionInfoKeys Name="OriginalFilename"/>
|
||||
<VersionInfoKeys Name="ProductName"/>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"/>
|
||||
<VersionInfoKeys Name="CFBundleName"/>
|
||||
<VersionInfoKeys Name="CFBundleDisplayName"/>
|
||||
<VersionInfoKeys Name="CFBundleIdentifier"/>
|
||||
<VersionInfoKeys Name="CFBundleVersion"/>
|
||||
<VersionInfoKeys Name="CFBundlePackageType"/>
|
||||
<VersionInfoKeys Name="CFBundleSignature"/>
|
||||
<VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
|
||||
<VersionInfoKeys Name="CFBundleExecutable"/>
|
||||
</VersionInfoKeys>
|
||||
</Delphi.Personality>
|
||||
<Platforms>
|
||||
<Platform value="OSX32">False</Platform>
|
||||
<Platform value="Win32">True</Platform>
|
||||
<Platform value="Win64">False</Platform>
|
||||
</Platforms>
|
||||
</BorlandProject>
|
||||
<ProjectFileVersion>12</ProjectFileVersion>
|
||||
</ProjectExtensions>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||
<Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
|
||||
</Project>
|
||||
|
||||
<!-- EurekaLog First Line
|
||||
[Exception Log]
|
||||
EurekaLog Version=7001
|
||||
DeleteMapAfterCompile=1
|
||||
EurekaLog Last Line -->
|
BIN
samples/MultiDemo/mmdt/mmdt.res
Normal file
BIN
samples/MultiDemo/mmdt/mmdt.res
Normal file
Binary file not shown.
@ -189,6 +189,9 @@
|
||||
<Projects Include="MultiDemo\FrameRecon\FrameRecon.dproj">
|
||||
<Dependencies/>
|
||||
</Projects>
|
||||
<Projects Include="MultiDemo\mmdt\mmdt.dproj">
|
||||
<Dependencies/>
|
||||
</Projects>
|
||||
</ItemGroup>
|
||||
<ProjectExtensions>
|
||||
<Borland.Personality>Default.Personality.12</Borland.Personality>
|
||||
@ -755,14 +758,23 @@
|
||||
<Target Name="FrameRecon:Make">
|
||||
<MSBuild Projects="MultiDemo\FrameRecon\FrameRecon.dproj" Targets="Make"/>
|
||||
</Target>
|
||||
<Target Name="mmdt">
|
||||
<MSBuild Projects="MultiDemo\mmdt\mmdt.dproj"/>
|
||||
</Target>
|
||||
<Target Name="mmdt:Clean">
|
||||
<MSBuild Projects="MultiDemo\mmdt\mmdt.dproj" Targets="Clean"/>
|
||||
</Target>
|
||||
<Target Name="mmdt:Make">
|
||||
<MSBuild Projects="MultiDemo\mmdt\mmdt.dproj" Targets="Make"/>
|
||||
</Target>
|
||||
<Target Name="Build">
|
||||
<CallTarget Targets="cv_AddWeighted;cvSetImageROI_cvAddWeighted;cv_And;cv_Canny;cv_CopyMakeBorder;cv_CreateCameraCapture;cv_CreateTrackbar;cv_CreateVideoWriter;cv_CvtColor;cv_CvtPixToPlane;cvErode_cvDilate;cv_FindContours;cv_FloodFill;cv_GetSubRect;cv_HoughCircles;cv_HoughLines2;cv_InRangeS;cv_Laplace;cv_LoadImage;cv_LoadImage2;cv_LoadVideo;cv_MorphologyEx;cv_RandInt;cv_Resize;cv_SetImageROI;cv_SetImageROI2;cv_SetMouseCallback;cv_Smooth;cv_Sobel;cvSplit_cvMerge;cv_Save;cv_Sub;cvThreshold_cvAdaptiveThreshold;cv_Integral;cv_WarpPerspective;cv_MatchShapes;cv_WarpAffine;cv_SnakeImage;cv_CalcOpticalFlowPyrLK;cv_CreateGaussianBGModel;cv_CreateFGDStatModel;cvCodeBook;cv_FindContours2;cv_CreateStructuringElementEx;cv_LinearPolar;cvMotion;cv_PyrSegmentation;cv_LoadHaarClassifierCascade;cv_AdaptiveSkinDetector;cv_ExtractSURF;HelloWorld;VideoProcessing;FaceDetect;Stereo;CameraCaptureAndFindContours;HandsDetect;Squares;CameraCalibrate;CameraShift;minarea;fback_c;FrameRecon"/>
|
||||
<CallTarget Targets="cv_AddWeighted;cvSetImageROI_cvAddWeighted;cv_And;cv_Canny;cv_CopyMakeBorder;cv_CreateCameraCapture;cv_CreateTrackbar;cv_CreateVideoWriter;cv_CvtColor;cv_CvtPixToPlane;cvErode_cvDilate;cv_FindContours;cv_FloodFill;cv_GetSubRect;cv_HoughCircles;cv_HoughLines2;cv_InRangeS;cv_Laplace;cv_LoadImage;cv_LoadImage2;cv_LoadVideo;cv_MorphologyEx;cv_RandInt;cv_Resize;cv_SetImageROI;cv_SetImageROI2;cv_SetMouseCallback;cv_Smooth;cv_Sobel;cvSplit_cvMerge;cv_Save;cv_Sub;cvThreshold_cvAdaptiveThreshold;cv_Integral;cv_WarpPerspective;cv_MatchShapes;cv_WarpAffine;cv_SnakeImage;cv_CalcOpticalFlowPyrLK;cv_CreateGaussianBGModel;cv_CreateFGDStatModel;cvCodeBook;cv_FindContours2;cv_CreateStructuringElementEx;cv_LinearPolar;cvMotion;cv_PyrSegmentation;cv_LoadHaarClassifierCascade;cv_AdaptiveSkinDetector;cv_ExtractSURF;HelloWorld;VideoProcessing;FaceDetect;Stereo;CameraCaptureAndFindContours;HandsDetect;Squares;CameraCalibrate;CameraShift;minarea;fback_c;FrameRecon;mmdt"/>
|
||||
</Target>
|
||||
<Target Name="Clean">
|
||||
<CallTarget Targets="cv_AddWeighted:Clean;cvSetImageROI_cvAddWeighted:Clean;cv_And:Clean;cv_Canny:Clean;cv_CopyMakeBorder:Clean;cv_CreateCameraCapture:Clean;cv_CreateTrackbar:Clean;cv_CreateVideoWriter:Clean;cv_CvtColor:Clean;cv_CvtPixToPlane:Clean;cvErode_cvDilate:Clean;cv_FindContours:Clean;cv_FloodFill:Clean;cv_GetSubRect:Clean;cv_HoughCircles:Clean;cv_HoughLines2:Clean;cv_InRangeS:Clean;cv_Laplace:Clean;cv_LoadImage:Clean;cv_LoadImage2:Clean;cv_LoadVideo:Clean;cv_MorphologyEx:Clean;cv_RandInt:Clean;cv_Resize:Clean;cv_SetImageROI:Clean;cv_SetImageROI2:Clean;cv_SetMouseCallback:Clean;cv_Smooth:Clean;cv_Sobel:Clean;cvSplit_cvMerge:Clean;cv_Save:Clean;cv_Sub:Clean;cvThreshold_cvAdaptiveThreshold:Clean;cv_Integral:Clean;cv_WarpPerspective:Clean;cv_MatchShapes:Clean;cv_WarpAffine:Clean;cv_SnakeImage:Clean;cv_CalcOpticalFlowPyrLK:Clean;cv_CreateGaussianBGModel:Clean;cv_CreateFGDStatModel:Clean;cvCodeBook:Clean;cv_FindContours2:Clean;cv_CreateStructuringElementEx:Clean;cv_LinearPolar:Clean;cvMotion:Clean;cv_PyrSegmentation:Clean;cv_LoadHaarClassifierCascade:Clean;cv_AdaptiveSkinDetector:Clean;cv_ExtractSURF:Clean;HelloWorld:Clean;VideoProcessing:Clean;FaceDetect:Clean;Stereo:Clean;CameraCaptureAndFindContours:Clean;HandsDetect:Clean;Squares:Clean;CameraCalibrate:Clean;CameraShift:Clean;minarea:Clean;fback_c:Clean;FrameRecon:Clean"/>
|
||||
<CallTarget Targets="cv_AddWeighted:Clean;cvSetImageROI_cvAddWeighted:Clean;cv_And:Clean;cv_Canny:Clean;cv_CopyMakeBorder:Clean;cv_CreateCameraCapture:Clean;cv_CreateTrackbar:Clean;cv_CreateVideoWriter:Clean;cv_CvtColor:Clean;cv_CvtPixToPlane:Clean;cvErode_cvDilate:Clean;cv_FindContours:Clean;cv_FloodFill:Clean;cv_GetSubRect:Clean;cv_HoughCircles:Clean;cv_HoughLines2:Clean;cv_InRangeS:Clean;cv_Laplace:Clean;cv_LoadImage:Clean;cv_LoadImage2:Clean;cv_LoadVideo:Clean;cv_MorphologyEx:Clean;cv_RandInt:Clean;cv_Resize:Clean;cv_SetImageROI:Clean;cv_SetImageROI2:Clean;cv_SetMouseCallback:Clean;cv_Smooth:Clean;cv_Sobel:Clean;cvSplit_cvMerge:Clean;cv_Save:Clean;cv_Sub:Clean;cvThreshold_cvAdaptiveThreshold:Clean;cv_Integral:Clean;cv_WarpPerspective:Clean;cv_MatchShapes:Clean;cv_WarpAffine:Clean;cv_SnakeImage:Clean;cv_CalcOpticalFlowPyrLK:Clean;cv_CreateGaussianBGModel:Clean;cv_CreateFGDStatModel:Clean;cvCodeBook:Clean;cv_FindContours2:Clean;cv_CreateStructuringElementEx:Clean;cv_LinearPolar:Clean;cvMotion:Clean;cv_PyrSegmentation:Clean;cv_LoadHaarClassifierCascade:Clean;cv_AdaptiveSkinDetector:Clean;cv_ExtractSURF:Clean;HelloWorld:Clean;VideoProcessing:Clean;FaceDetect:Clean;Stereo:Clean;CameraCaptureAndFindContours:Clean;HandsDetect:Clean;Squares:Clean;CameraCalibrate:Clean;CameraShift:Clean;minarea:Clean;fback_c:Clean;FrameRecon:Clean;mmdt:Clean"/>
|
||||
</Target>
|
||||
<Target Name="Make">
|
||||
<CallTarget Targets="cv_AddWeighted:Make;cvSetImageROI_cvAddWeighted:Make;cv_And:Make;cv_Canny:Make;cv_CopyMakeBorder:Make;cv_CreateCameraCapture:Make;cv_CreateTrackbar:Make;cv_CreateVideoWriter:Make;cv_CvtColor:Make;cv_CvtPixToPlane:Make;cvErode_cvDilate:Make;cv_FindContours:Make;cv_FloodFill:Make;cv_GetSubRect:Make;cv_HoughCircles:Make;cv_HoughLines2:Make;cv_InRangeS:Make;cv_Laplace:Make;cv_LoadImage:Make;cv_LoadImage2:Make;cv_LoadVideo:Make;cv_MorphologyEx:Make;cv_RandInt:Make;cv_Resize:Make;cv_SetImageROI:Make;cv_SetImageROI2:Make;cv_SetMouseCallback:Make;cv_Smooth:Make;cv_Sobel:Make;cvSplit_cvMerge:Make;cv_Save:Make;cv_Sub:Make;cvThreshold_cvAdaptiveThreshold:Make;cv_Integral:Make;cv_WarpPerspective:Make;cv_MatchShapes:Make;cv_WarpAffine:Make;cv_SnakeImage:Make;cv_CalcOpticalFlowPyrLK:Make;cv_CreateGaussianBGModel:Make;cv_CreateFGDStatModel:Make;cvCodeBook:Make;cv_FindContours2:Make;cv_CreateStructuringElementEx:Make;cv_LinearPolar:Make;cvMotion:Make;cv_PyrSegmentation:Make;cv_LoadHaarClassifierCascade:Make;cv_AdaptiveSkinDetector:Make;cv_ExtractSURF:Make;HelloWorld:Make;VideoProcessing:Make;FaceDetect:Make;Stereo:Make;CameraCaptureAndFindContours:Make;HandsDetect:Make;Squares:Make;CameraCalibrate:Make;CameraShift:Make;minarea:Make;fback_c:Make;FrameRecon:Make"/>
|
||||
<CallTarget Targets="cv_AddWeighted:Make;cvSetImageROI_cvAddWeighted:Make;cv_And:Make;cv_Canny:Make;cv_CopyMakeBorder:Make;cv_CreateCameraCapture:Make;cv_CreateTrackbar:Make;cv_CreateVideoWriter:Make;cv_CvtColor:Make;cv_CvtPixToPlane:Make;cvErode_cvDilate:Make;cv_FindContours:Make;cv_FloodFill:Make;cv_GetSubRect:Make;cv_HoughCircles:Make;cv_HoughLines2:Make;cv_InRangeS:Make;cv_Laplace:Make;cv_LoadImage:Make;cv_LoadImage2:Make;cv_LoadVideo:Make;cv_MorphologyEx:Make;cv_RandInt:Make;cv_Resize:Make;cv_SetImageROI:Make;cv_SetImageROI2:Make;cv_SetMouseCallback:Make;cv_Smooth:Make;cv_Sobel:Make;cvSplit_cvMerge:Make;cv_Save:Make;cv_Sub:Make;cvThreshold_cvAdaptiveThreshold:Make;cv_Integral:Make;cv_WarpPerspective:Make;cv_MatchShapes:Make;cv_WarpAffine:Make;cv_SnakeImage:Make;cv_CalcOpticalFlowPyrLK:Make;cv_CreateGaussianBGModel:Make;cv_CreateFGDStatModel:Make;cvCodeBook:Make;cv_FindContours2:Make;cv_CreateStructuringElementEx:Make;cv_LinearPolar:Make;cvMotion:Make;cv_PyrSegmentation:Make;cv_LoadHaarClassifierCascade:Make;cv_AdaptiveSkinDetector:Make;cv_ExtractSURF:Make;HelloWorld:Make;VideoProcessing:Make;FaceDetect:Make;Stereo:Make;CameraCaptureAndFindContours:Make;HandsDetect:Make;Squares:Make;CameraCalibrate:Make;CameraShift:Make;minarea:Make;fback_c:Make;FrameRecon:Make;mmdt:Make"/>
|
||||
</Target>
|
||||
<Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
|
||||
</Project>
|
||||
|
Loading…
Reference in New Issue
Block a user