由于实验室项目遗留问题,可能为了图matlab绘图方便,前面的开发人员在C++核心代码外加了一层matlab外壳,在matlab里调用C++方法,并使用matlab绘图显示。当我接手这份代码之后,在Windows上调试发现了几个难以忍受的问题,
1. matlab调用之前必须将c++代码编译成二进制文件,如此一来在matlab里就没法调试,不得不使用Visual Studio的附加进程调试,需要频繁来回切换VS和maltab;
2. 使用附加进程调试时如果C++程序崩溃,导致matlab必须重启,而matlab重启速度之慢无法忍;
3. 全速运行起来速度之慢无法忍。
综上所述,决定将代码全部移植到C++下。综合考虑,移植到C++下,可能存在以下两个问题:图像读取与转换和计算结果可视化。
图像加载与转换
项目是有关图像处理的,matlab提供非常便捷的图像转换和处理库,在C++下没有这些API,也不可能自己从头实现这些基础功能,自然而然选择了OpenCV这样的第三方库。
- 下载OpenCV2.4.9 for Windows,解压到OPENCV_ROOT(自定义路径);
- 在VS2012里指定头文件路径为:
OPENCV_ROOT/build/include
;库文件路径:OPENCV_ROOT/build/x64/vc11/lib
; - 从
OPENCV_ROOT/build/x64/vc11/bin
拷贝opencv_core249d.dll
,opencv_core249.dll
,opencv_highgui249d.dll
和opencv_highgui249.dll
到VS工程目录(工程为x64,x86工程); 在代码中添加如下代码表明用到的库文件
#ifdef _DUBUG #pragma comment(lib, "opencv_core249d.lib") #pragma comment(lib, "opencv_highgui249d.lib") #else #pragma comment(lib, "opencv_core249.lib") #pragma comment(lib, "opencv_highgui249.lib") #endif