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;
}
//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
- opecvdll 的测试 代码
- upnp的测试代码
- 测试代码的编写
- 测试代码的编写
- 测试代码的编写
- HOOK的测试代码
- 代码块的测试
- 测试Hibernate连接数据库的测试代码
- 之前的java测试代码 性能测试
- 测试Hibernate连接数据库的测试代码
- 测试代码运行时间的代码
- js代码调用c++代码的测试
- 整洁代码----整洁的测试代码
- 代码测试的简单框架
- 维护你的测试代码
- 测试Java代码的执行时间
- 测试杀毒软件的性能代码:
- 接口的客户端测试代码
- OpenCV基础篇之读取显示图片
- css背景图片拉伸填充避免重复显示
- ZoneGridVIew 自定义放大GridView
- Neutron L3 auto Reschedule VRouter feature
- 一些优秀的移动开发网址
- opecvdll 的测试 代码
- spring 错误
- Android 设计模式之模板模式
- 雷德算法 (快速傅里叶变换中用到的倒位序算法)
- 数据库ORA-01196(ORA-10458/ORA-01110)错误解决方法
- 使用notification广播实现视图跳转传递数据
- LeetCode Add Two Numbers
- Java初学习-泛型初学习
- C/C++学习笔记32:字符串操作与字符子串问题