回复 19# chenronting
6楼的BIN可以在你的NT6上运行不?
我不懂E
更不知道E的是不是调用同一个DLL int _stdcall Distinguish(char* image, char* CascadeFile, double ImgScale, double FaceScale, int Size1, int Size2, int Frequency, int Mode, char* RetFace)
{
string strFace;
int retInt;
Mat img;
switch(Mode)
{
case 1:
img = imread( image, 1 );//读入lena图片
strFace=FaceDistinguish(img, CascadeFile, ImgScale, FaceScale, Size1, Size2, Frequency);
break;
case 2:
{
if(PictureFormatJudge(image,FORMAT_BMP)==1)
{
IplImage *pImg=BmpTOIpl(image);//bmp转IplImage
cvFlip(pImg,NULL,0);//图像垂直翻转
Mat img1(pImg,0);
img=img1;
strFace=FaceDistinguish(img, CascadeFile, ImgScale, FaceScale, Size1, Size2, Frequency);
cvReleaseImage(&pImg);//释放图
}else
{
strFace="图像格式错误,目前只支持BMP格式";
retInt=0;
}
}
break;
default:
strFace="检测方式错误";
retInt=0;
break;
}
strcpy(RetFace,strFace.c_str());
return retInt;
上面是DLL的代码
NT6产生的异常位于opencv_objdetect24x.dll中,异常类型为0xC0000005
应该是由DLL代码中if( !cascade.load( CascadeFile ) )//从指定的文件目录中加载级联分类器
这句引起的,但是我找不到这个成员函数load的代码,所以无法帮你修复.
不过可以换种方式,如果6#的bin能执行能成功,改成DLL也不是什么难事 |