opecvdll 的测试 代码

来源:互联网 发布:移动互联网数据报告 编辑:程序博客网 时间:2024/04/30 15:54
typedef bool (*DetectPROC)(char* imageData,wbAreaInfo wbArea[],int *wbNum,int wd,int ht,int nChanels,int scale,float wbZoom,int nLayer,bool wfCapture,int wbWaveBrighte);


//bool wcDetectFace( char* imageData,CvHaarClassifierCascade* wbCascade,wbAreaInfo wbArea[],int *wbNum,int wd,int ht,int nChanels,int scale,float wbZoom,int nLayer,bool wfCapture = false,int wbWaveBrighte = 128);
//bool wcDWT(IplImage *pImage, int nLayer);
typedef int (*DetectGENDER)(Mat original);


int _tmain( int argc,  _TCHAR* argv[] ) 

//CvHaarClassifierCascade* cascade = 0;
//const char* cascade_name ="haarcascade_frontalface_alt.xml";
    int genders = 4;
    wbAreaInfo  wbArea[Max_FaceNum];



    cvNamedWindow( "src", 1 ); 
cvNamedWindow( "人脸检测", 1 ); 
    const char* filename = "3.jpg"; 
    IplImage* image = cvLoadImage( filename,CV_LOAD_IMAGE_UNCHANGED);
cvShowImage( "src", image);
Mat original = imread(filename) ;
// Show the result:
// imshow("face_recognizer", original);
/*int *wbFaceNum = new int;*/



//while(image)
//{
// long t1=GetTickCount();
// wcDetectFace(image->imageData ,wbCascade,wbArea,wbFaceNum,image->width ,image->height ,3,20,0.5,1,true,0);       //组合使用效果较好
//// cvShowImage( "人脸检测",image );


// long t2=GetTickCount();
// printf("%d\n",t2-t1);
//    
// for(int i=0;i<*wbFaceNum;i++)
// {
// printf("%d,%d,%d,%d\n",wbArea[i].x,wbArea[i].y,wbArea[i].width,wbArea[i].height);
// }
//
// cvWaitKey(500); 


//}


/*delete wbFaceNum;*/
/***************动态链接库方法*********************/


int *wbFaceNum = new int;


if(image)
{
HINSTANCE hst = LoadLibraryA("OpenCV_DLL.dll");


DetectPROC wcDetectFace=(DetectPROC)GetProcAddress(hst,"wcDetectFace");
DetectGENDER tfDetectGender = (DetectGENDER)GetProcAddress(hst,"tfDetectGender");

if(!wcDetectFace)
{
fprintf( stderr, "ERROR: 获取动态链接函数失败!\n" ); 
return 1;
}
while(image)
{
long t1=GetTickCount();
wcDetectFace(image->imageData ,wbArea,wbFaceNum,image->width ,image->height ,3,20,0.5,1,true,0);       //组合使用效果较好
genders = tfDetectGender(original);
printf("%d\n",genders);
long t2=GetTickCount();
printf("%d\n",t2-t1);
for(int i=0;i<*wbFaceNum;i++)
{
printf("%d,%d,%d,%d\n",wbArea[i].x,wbArea[i].y,wbArea[i].width,wbArea[i].height);
}


cvWaitKey(500); 


}
}


delete wbFaceNum;






cvReleaseImage( &image );   
cvDestroyAllWindows();


    return 0; 
}
0 0
原创粉丝点击