首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问,MFC工程 调用DLL,传递IplImage、Mat、CImage参数,如何传递!

2013-08-01 
请教,MFC工程 调用DLL,传递IplImage、Mat、CImage参数,怎么传递!!!现在的编写方式为MFC工程调用代码:Mat mat

请教,MFC工程 调用DLL,传递IplImage、Mat、CImage参数,怎么传递!!!
现在的编写方式为
MFC工程调用代码:
Mat mat2 = imread("d://barcode.bmp");
//ATL::CImage cImage;
HINSTANCE hDll;
hDll = LoadLibrary(TEXT("FireMeasureCOM.dll"));
typedef char*(*handleFun)(Mat);
handleFun funHandle;
if(hDll!=NULL)
{
funHandle = (handleFun)GetProcAddress(hDll,"Handle");
if(funHandle!=NULL)
{
string str="";
str = funHandle(mat2);
}
}


DLL接受函数的代码:
AOICOMDLL string Handle(Mat image)
{
//CImage cImage;
//MatToCImage(image,cImage);
//CvMat stub = (CvMat)image;

IplImage sourceImage = image;
MeasureBusiness business = MeasureBusiness(&sourceImage);
map<string,map<double,int>> temp = business.Handle();

string returnStr = ConvertMapToStr(temp);

return returnStr;
}

问题是:
DLL接受函数收到的参数image提示“指针错误”,不能转换为IplImage。
求大牛帮忙解答。 MFC C++ Mat Dll IplImage
[解决办法]
DLL接受函数的代码:
AOICOMDLL char* Handle(Mat& image)
{
//CImage cImage;
//MatToCImage(image,cImage);
//CvMat stub = (CvMat)image;

IplImage sourceImage = image;
MeasureBusiness business = MeasureBusiness(&sourceImage);
map<string,map<double,int>> temp = business.Handle();

string returnStr = ConvertMapToStr(temp);

return returnStr;
}

或者:

DLL接受函数的代码:
AOICOMDLL char* Handle(Mat* image)
{
//CImage cImage;
//MatToCImage(image,cImage);
//CvMat stub = (CvMat)image;

IplImage sourceImage = *image;
MeasureBusiness business = MeasureBusiness(&sourceImage);
map<string,map<double,int>> temp = business.Handle();

string returnStr = ConvertMapToStr(temp);

return returnStr;
}
试试吧
是在用GDI+ 吗???



[解决办法]
嗯,这都是OpenCV的基础知识啊。。。前两者有派生关系啊,CImage是需要转化的。是GDI+的那个CImage吧?

热点排行