vc++ 调用matlab进行 图像处理
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定义的有问题才导致了程序出错?这个问题应该怎么解决呢?
希望能得到大家的帮助,非常感谢!!!
相关推荐
VC++调用Matlab实现图像处理的3种常用方法比较.pdf
文章中提到的VC++调用Matlab实现图像处理的三种常用方法包括:利用Matlab引擎、利用MATCOM编译器以及利用COMBuilder工具。这些方法各有其特点,下面将逐一介绍并比较它们。
VC++与MATLAB集成实现数字图像处理的完整指南
MATLAB Engine提供了一种允许用户在C/C++程序中直接使用MATLAB的功能和代码库的途径。它支持直接的命令执行和数据交换,使得C++程序能够利用MATLAB强大的数学计算和数据分析能力。这一接口特别适合于需要将MATLAB的算法能力与C++的性能优势结合起来的场景。图像处理API为开发者提供了一系列操作和分析图像的工具,它在数字化图像处理中扮演着核心角色。通过调用这些API,开发者能够执行包括图像读取、写入、转换、滤波、边缘检测、形态学操作以及色彩空间转换等广泛的操作。
VC++调用Matlab实现图像处理的3种常用方法比较.zip
有时,为了利用MATLAB的优势,开发者会在VC++项目中调用MATLAB来执行特定的图像处理任务。本资料主要探讨了三种常见的VC++调用MATLAB实现图像处理的方法,并进行了比较。1.
基于 VC++环境下调用MATLAB实现数字图像处理的实例源代码
**数据传递**:VC++将图像数据传递给MATLAB,这可能涉及到数据类型的转换和内存管理。3. **调用MATLAB函数**:在VC++中调用已生成的MATLAB函数执行图像处理任务。4.
VC_与Matlab混合编程在数字图像处理中的应用
#### Matlab引擎:VC++与Matlab的桥梁Matlab引擎是一种允许其他应用程序通过动态链接库(DLL)与Matlab进行交互的机制,它使得非Matlab语言如VC++能够调用Matlab


图形处理/算法
