现在的位置: 首页 > 综合 > 正文

新人学习opencv笔记(一)

2013年01月03日 ⁄ 综合 ⁄ 共 1233字 ⁄ 字号 评论关闭

    这是我的第一篇博客论文,如果内容有错误,希望大家指出,我一定及时更正,有些知识还不是很明白,请见谅。

    最近做项目,要用到OpenCV,也只能边学边做项目了,似乎工作后很多东西也要边学边做呢?这篇博客记录我学习OpenCV的一些笔记。有和我一样在学OpenCV的希望能一起交流。

    记得于仕琪《学习OpenCV---布拉德斯基》里有说OpenCV是用C++写的,虽然里面有一些结构体struct等C风格语句,但整体是面向对象的。个人觉得面向对象代码的更容易看懂,而且我对C风格很陌生。。。


    这两天在分析从CSDN上某大神分享的meanshift代码,下面主要记录一些用到的函数

      cvCvtColor( image, hsv, CV_BGR2HSV );
        //把图像从RGB表色系转为HSV表色系

      cvCvtColor 色彩空间转换,把输入图像从一个色彩空间转换为另一个色彩空间。这里将RGB表色系转换为HSV表色系似乎是为了方便提取特征向量,HSV即指色调hue,饱和度saturation, 亮度value(程序最后只用了色调hue)。 HSV也称六角棱锥模型(这个似乎很深奥o(╯□╰)o),我就当它是一个坐标系,从RGB坐标系转换到HSV坐标系,怎么转换暂时不去探究了,下面是两张HSV的模型图片,来自百度百科。

                                                         

    cvInRangeS( hsv, cvScalar(0,smin,MIN(_vmin,_vmax),0),
                        cvScalar(180,256,MAX(_vmin,_vmax),0), mask );
            //制作掩膜板,只处理像素值为H:0~180,S:smin~256,V:vmin~vmax之间的部分

   cvInRangeS检查数组是否在两个数量之间,这里将数量之间。  掩膜板不太明白...我暂时理解为取某范围内的像素值吧,之后再做研究。

  cvSplit( hsv, hue, 0, 0, 0 );
   //分离H分量

   cvSplit分割多通道数组成几个单通道数组或者从数组中提取一个通道,只要hue色调。           


     cvSetImageROI( hue, selection );
     cvResetImageROI(hue)

  cvSetImageROI设置感兴趣区域 cvResetImageROI去除感兴趣区域


  cvCalcBackProject( &hue, backproject, hist );
            //计算hue的反向投影图

  cvCalcBackProject( IplImage** image, CvArr* back_project, const CvHistogram* hist );
计算反向投影,输入图像image.反向投影图像back_project,hist直方图。反向投影是一种记录给定图像中的像素点如何适应直方图模型像素分布的方式
(这个也要再研究) ,我觉得这里是为了匹配。


    今天先写这么多。




   

抱歉!评论已关闭.