OpenCV使用的一些经验总结

使用OpenCV也有一段时间了,中间遇到了不少问题。一般都是到网络上找答案或者自己试验,现在把这些经验好好整理下,方便自己查找也方便同行参考。

最新更新日期:2009.09.26

 

一、轮廓(Contour)

1.cvDrawContours()可以填充轮廓内部。

  cvDrawContours(gray, contour,cvScalar(255,255,255,0),cvScalar(255,255,255,0),0,CV_FILLED );//用黑色填充轮廓内部

 

2.得到所有轮廓中面积最大的一个

 

二、其他

1. 图像旋转 

 

2.把轮廓包括的区域摆正

 

  

3、cvGetMat()

CvMat* cvGetMat( const CvArr* arr, CvMat* header, int* coi=NULL, int allowND=0 );

可以从一个IplImage *arr得到CvMat *matFromImage.但只是把原来图像的IplImage头变成了CvMat头,数据体部分并没有复制,所以如果此时Release了arr,则再访问matFromImage就会出现错误。

另外第二个参数是临时变量,声明一个CvMat型的就可以了。

 

4、判断矩阵的数据类型

 

5、cvSaveImage(filename,image);

其中如果filename是一个路径,而路径中有一个不存在的文件夹,那么该函数就会报错。也就是该函数不会自动创建文件夹。

6、之前用OpenCV做的一个程序出现了内存泄露的问题。于是找各种方法解决。首先发现OpenCV公布了1.2版,changelog里提到更新了内存管理部分,所以打算用1.2版修改原来的程序;另外找到了一篇关于OpenCV内存泄露的博客,指出了几种可能出现泄漏的情况,所以准备检查自己写的那部份是不是有问题。

 

2009.09.26

7、1.2版的OpenCV中,cvLoadImage()貌似不支持中文文件路径!1.1下面写的程序,文件路径里包含中文没问题,换到1.2下就加载不上图像,然后换个不包含中文的路径发现可以了!!!!囧!

 

2009.11.21

cvCreateHist()生成的直方图在没有经过cvCalcHist()之前内部数据均默认为0!

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值