vc++ 调用matlab进行 图像处理
在VS2008平台下,用OpenCV采用动态链接库的方法调用我在matlab下自编的角点检测函数count=corner(I),其中I为被检测的图像,count为检测到的角点坐标矩阵。
count=corner(I)函数中matlab环境下已运行成功,但在调用时却遇到了问题。
主程序代码如下:
int main()
{
if( ! mclInitializeApplication(NULL,0) )
{
printf("ok");
fprintf(stderr, "Could not initialize the application.\n");
exit(1);
}
// 初始化库
if (! libcornerInitialize() )
{
fprintf(stderr,"Could not initialize the library.\n");
exit(1);
}
printf("game over!\n");
IplImage* pFrame = NULL;
char* filename = "D://image.jpg";
pFrame = cvLoadImage(filename, 1);
int NUM=30;
int NUM1=2;
mwArray y(NUM,NUM1,mxDOUBLE_CLASS);//y用于输出最后得到的矩阵
mwSize dims[3];
dims[0] = pFrame->height; dims[1] = pFrame->width; dims[2] = 3;
int len = pFrame->height * pFrame->width *3;
mwArray mwdisp( 3, dims, mxUINT8_CLASS, mxREAL);
mwdisp.SetData((double*)pFrame->imageData, len);
corner(1,y,mwdisp);
libcornerTerminate(); //关闭库和程序
mclTerminateApplication();
return 0;
}
由于corner函数的输出矩阵count大小不确定,即对不同的图像检测到的角点个数不确定,所以我在主函数中定义了y数组的大小为30*2,它的大小一定会比count大。不知道是不是因为y定义的有问题才导致了程序出错?这个问题应该怎么解决呢?
希望能得到大家的帮助,非常感谢!!!