PDA

View Full Version : Thắc mắc về (int argc, char** argv)



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

VuongChieuQuan
09-05-2008, 09:52
Nếu không sử dụng tham số dòng lệnh nữa thì đơn giản là bạn bỏ hai cái đó đi, sau đó gán lại hai chuỗi str1 = argv[0] = "usage" và str2 = argv[1] = "fileName" vào đầu đoạn code ấy.