opencv函数说明

1,circle()函数

cvCircle(CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int lineType=8, int shift=0)

img为图像指针,单通道多通道都行,不需要特殊要求

center为画圆的圆心坐标

radius为圆的半径

color为设定圆的颜色,比如用CV_RGB(255, 0,0)设置为红色

thickness为设置圆线条的粗细,值越大则线条越粗,为负数则是填充效果

2,cvCreateTrackbar()函数

int cvCreateTrackbar(

const char* trackbar_name, //滑动条的名称

const char* window_name, //窗口的名称,滑动条不会遮挡图像

int* value, //当滑动条被拖到时,OpenCV会自动将当前位置所代表的值传给指针指向的整数

int count, //滑动条所能达到的最大值

CvTrackbarCallback on_change //可选的回调函数,回调函数可参见http://wapedia.mobi/zhtrad/回调函数

);

 

其中openCV的highgui库提供了两个函数来读取和设置滚动条的value值

//读取value值

int cvGetTrackbarPos(

const char* trackbar_name,

cosnt char* window_name

);

//设置value值

void cvSetTrackbarPos(

const char* trackbar_name,

const char* window_name,

int pos

3,TermCriteria函数

TermCriteria(
int type, // CV_TERMCRIT_ITER, CV_TERMCRIT_EPS, or both
int maxCount,
double epsilon
);
从上面定义中可以看出,这个该类变量需要3个参数,一个是类型,第二个参数为迭代的最大次数,最后一个是特定的阈值。类型有
TermCriteria::COUNT、TermCriteria::EPS、TermCriteria::COUNT+EPS,分别代表着迭代终止条件为达到最大迭代次数终止,迭
代到阈值终止,或者两者都作为迭代终止条件。
     典型的TermCriteria()函数来产生我们所需要的结构。该首先这个函数是不是CV_TERMCRIT_ITER或CV_TERMCRIT_EPS,它告诉我们要终止的
算法要么重复或当数后该河段较小的值(分别)。接下来的两设置在其中一个,另一个,或两者的这些条件应终止算法中的值。 我们有两种选择,
因是这样我们就可以将类型设置为CV_TERMCRIT_ITER|当达到任一限制CV_TERMCRIT_EPS和停止。
4,ipch文件是什么

在使用Visual Studio 2010开发C++程序的时候,会发现有一些奇怪的文件被创建出来,比如一个叫ipch的文件夹,和一个与工程同名的.sdf文件,而且ipch下面的文件和.sdf文件都很大,至少有10M,大项目可能超过100M,那这些文件是干什么用的呢?这些文件是Visual Studio用来保存预编译的头文件Intellisense用的,删除这些文件对于工程的开发完全没有影响。

5.关于运行程序报错“未定义或为申明的函数或字符”
 往往是由于在不同的版本中opencv函数形式会有变化(特别是在opencv2和opencv3之间),或函数调用方式跟版本不匹配,还有一个可能原因是没有添加相应函数坐在库的库文件。

6.调用inintModule_nonfree()

  
  
[cpp]  view plain  copy
  1. #include <opencv2/opencv.hpp>  
  2. #include <opencv2/nonfree/nonfree.hpp>  
  3. #include <opencv2/nonfree/features2d.hpp>  
  4.   
  5. using namespace cv;  
  6.   
  7. void main()  
  8. {  
  9.     Mat image = imread("church01.jpg");  
  10.     Mat imageGray = imread("church01.jpg", 0);  
  11.     Mat descriptors;  
  12.     vector<KeyPoint> keypoints;  
  13.     // 新版本2.4.0方法  
  14.     initModule_nonfree();  
  15.   
  16.     Ptr<Feature2D> sift1 = Algorithm::create<Feature2D>("Feature2D.SIFT");  
  17.     sift1->set("contrastThreshold", 0.01f);  
  18.     (*sift1)(imageGray, noArray(), keypoints, descriptors);  
  19.   
  20.     // 2.3.1方法  
  21. //  SiftFeatureDetector sift2(0.06f, 10.0);  
  22. //  sift2.detect(imageGray, keypoints);  
  23.       
  24.     drawKeypoints(image, keypoints, image, Scalar(255,0,0));  
  25.   
  26.     imshow("test", image);  
  27.     waitKey();  
  28. }  
            注意initModule_<modulename>()函数,这个函数要在create前使用,才可以动态的创建算法,不然那个create的指针很野哦。大家都懂的。如果要使用SURF、SIFT算法,就要调用initModule_nonfree(),要使用EM算法,就要先调用initModule_ml()。
使用initModule_nonfree()函数要在头文件中加    #include< opencv2/nonfree/nonfree.hpp>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值