OpenCV 相比matlab的图像库,最大的优点自然是速度比较快,毕竟是底层的c和c++编写的,而且也有一定的灵活性,能和vc结合使用导致了他的应用越来越多,下面说说我的一些学习经验。

对于初学者,应该具备c和c++的基础知识,这样才能很好的使用OpenCV。当然也必须会VC,要不无法进行实际操作。根据你的任务,了解相应的图像处理、数学和计算机视觉的知识。

装上OpenCV后首先仔细看帮助文档的cvcore中的前面半部分,了解OpenCV定义的图像类和数据类型以及他所定义的一些数学函数。这个过程大约需要一天,争取弄明白他的基本框架。然后就可以看他的highgui和cv函数库的说明了,了解他的输入输出和一些常用的图像处理函数,可以对比matlab进行学习。

对OpenCV的函数库有个整体理解后,就可以看看网上的一些小程序,对应着文档进行函数的理解。个人觉得难点有二: 一是函数的参数指针很多,有可能造成理解上的一些困难;二是有时候很难找到你所需要的函数来完成特定功能,需要在你熟悉每个函数的前提下仔细思考,进行函数组合来完成任务。举个例子说明一下:当然,有些函数的参数自身都很难理解,更别说运用了ru。

还有,因为OpenCV中的数学操作很多需要提前定义好一个图像,不停的做图像整体运算,需要的内存很大,要即使释放或者考虑创建一个中间图像来专门进行运算。

最后再次强调一下,OpenCV的优势就在于速度,应该尽可能的精简程序,寻找更简便的算法等。在经历了matlab图像运算的蜗牛慢之后,在很多情况下,可以使用OpenCV进行变成方针,我相信这样会更有效率。