视觉(4)一个简单易用的opencv封装类
http://www.cnblogs.com/Files/cutepig/CVClass.rar
最近一直用opencv编程序,功能很强大,有些时候却不大方便,比如图像IplImage,矩阵CvMat,以及CvSe等的内存申请和释放都需要自己维护,程序员的负担比较重,一不小心还会导致内存泄漏等。
后来看到一个叫做blepo的函数库,这个库将矩阵和图像的处理封装的比较好,写起来程序感觉根matlab似的,但是这个库比较庞大,有很多和openCV重复的函数,如果和opencv同时使用总感觉不方便。今天便自己写了一个基于opencv的轻量级的c++库。现在对图像,矩阵,CvSeq有了简单的封装.
设计原则:
1.易用:第一是使用户避免直接为图像和矩阵分配和释放内存;第二是对于矩阵,图像处理,能以类似于matlab的方式写程序,这么做也方便了matlab函数向c++的迁移。比如对于矩阵可以这么写
HMatDbl m=m1+m2*m3-Inv(m4)*Transpose(m5);
2.在易用的基础上尽量兼顾效率。
3.能够尽可能方便的调用已有的opencv的函数。这一点主要是通过重载IplImage *和CvMat *和void *来实现的,可以实现几乎透明的调用cvXX等类似的函数。
一点感受:
1.重载+,-,*,/,=等运算符时需要同时重载拷贝构造函数,析构函数(一般需要释放内存)。这个问题折磨了我好长时间,后来挑了半天才找到原因:唉,基础不扎实。。。
2.以后打算进一步完善,增加blobAnalysys(对应contours)相关函数
- 上一篇 视觉(3)blepo.
- 下一篇 终于成功仿了一次kalman滤波器.