luck_luck
09-05-2008, 09:08
Em có một số đoạn chương trình dạng như
int main(int argc, char** argv)
{
// variables
IplImage * pInpImg = 0;
CvHaarClassifierCascade * pCascade = 0; // the face detector
CvMemStorage * pStorage = 0; // memory for detector to use
CvSeq * pFaceRectSeq; // memory-access interface
// usage check
if(argc < 2)
{
printf("Missing name of image file!\n"
"Usage: %s <imagefilename>\n", argv[0]);
exit(-1);
}
// initializations
pInpImg = (argc > 1) ? cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR) : 0;
pStorage = cvCreateMemStorage(0);
pCascade = (CvHaarClassifierCascade *)cvLoad
((OPENCV_ROOT"/data/haarcascades/haarcascade_frontalface_default.xml"),
0, 0, 0 );
// validate that everything initialized properly
if( !pInpImg || !pStorage || !pCascade )
{
printf("Initialization failed: %s\n",
(!pInpImg)? "can't load image file" :
(!pCascade)? "can't load haar-cascade -- "
"make sure path is correct" :
"unable to allocate memory for data storage", argv[1]);
exit(-1);
}
// detect faces in image
pFaceRectSeq = cvHaarDetectObjects
(pInpImg, pCascade, pStorage,
1.1, // increase search scale by 10% each pass
3, // merge groups of three detections
CV_HAAR_DO_CANNY_PRUNING, // skip regions unlikely to contain a face
cvSize(40,40)); // smallest size face to detect = 40x40
// display detected faces
displayDetections(pInpImg, pFaceRectSeq);
// clean up and release resources
cvReleaseImage(&pInpImg);
if(pCascade) cvReleaseHaarClassifierCascade(&pCascade);
if(pStorage) cvReleaseMemStorage(&pStorage);
return 0;
}
nay em muốn chuyển nó về dạng như void tên hàm() để gọi cho dễ thì làm thế nào, em làm với vc++, do không phải chuyên ngành nên kiến thức còn hạn chế, mong các bác chỉ giúp, nếu nói chi tiết được thì càng tốt :D
int main(int argc, char** argv)
{
// variables
IplImage * pInpImg = 0;
CvHaarClassifierCascade * pCascade = 0; // the face detector
CvMemStorage * pStorage = 0; // memory for detector to use
CvSeq * pFaceRectSeq; // memory-access interface
// usage check
if(argc < 2)
{
printf("Missing name of image file!\n"
"Usage: %s <imagefilename>\n", argv[0]);
exit(-1);
}
// initializations
pInpImg = (argc > 1) ? cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR) : 0;
pStorage = cvCreateMemStorage(0);
pCascade = (CvHaarClassifierCascade *)cvLoad
((OPENCV_ROOT"/data/haarcascades/haarcascade_frontalface_default.xml"),
0, 0, 0 );
// validate that everything initialized properly
if( !pInpImg || !pStorage || !pCascade )
{
printf("Initialization failed: %s\n",
(!pInpImg)? "can't load image file" :
(!pCascade)? "can't load haar-cascade -- "
"make sure path is correct" :
"unable to allocate memory for data storage", argv[1]);
exit(-1);
}
// detect faces in image
pFaceRectSeq = cvHaarDetectObjects
(pInpImg, pCascade, pStorage,
1.1, // increase search scale by 10% each pass
3, // merge groups of three detections
CV_HAAR_DO_CANNY_PRUNING, // skip regions unlikely to contain a face
cvSize(40,40)); // smallest size face to detect = 40x40
// display detected faces
displayDetections(pInpImg, pFaceRectSeq);
// clean up and release resources
cvReleaseImage(&pInpImg);
if(pCascade) cvReleaseHaarClassifierCascade(&pCascade);
if(pStorage) cvReleaseMemStorage(&pStorage);
return 0;
}
nay em muốn chuyển nó về dạng như void tên hàm() để gọi cho dễ thì làm thế nào, em làm với vc++, do không phải chuyên ngành nên kiến thức còn hạn chế, mong các bác chỉ giúp, nếu nói chi tiết được thì càng tốt :D