攻城狮凌风

OpenCV创建轨迹条,图片像素的访问

.OpenCV创建进度条以及图像对比度,亮度调整

 

1.创建轨迹条createTrackbar()

函数原型C++: intcreateTrackbar(conststring& trackbarname, conststring& winname,  int* value, int count,        

                      TrackbarCallbackonChange=0,void* userdata=0);

变量说明:依次为【进度条名称】,【所添加到的窗口名称】,【整形指针,表征进度条当前位置,并且在创建进度条时,滑块的初始值为该指针的当前值】,【滑块的最大值,最小值恒定为0】,【回调函数】,【用户数据】。

第五个参数,TrackbarCallback类型的onChange,默认值0。这是一个指向回调函数的指针,每次滑块位置改变时,这个函数都会进行回调。并且回调函数的原型必须为void func(int,void*);其中第一个参数是轨迹条的位置(int型变量),第二个参数是用户数据(看下面的第六个参数)。如果回调是NULL指针,表示没有回调函数的调用,仅第三个参数value有变化。

第六个参数,void*类型的userdata,他也有默认值0。这个参数是用户传给回调函数的数据,用来处理轨迹条事件如果使用的第三个参数value实参是全局变量的话,完全可以不去管这个userdata参数。

 

2. 获得轨迹条当前位置getTrackbarPos()

C++: intgetTrackbarPos(conststring& trackbarname, conststring& winname);

        变量说明:变量依次为轨迹条名称,轨迹条所处的窗口名称

 

3.关于图片中像素的访问

       3.1访问图片image像素(i,j,k),

           1).彩色图片image.at<Vec3b>(y,x)[c]其中y行,x列c是GBR(对应c=0,1,2)其中之一<Vec3b>代表的意思是:a vector of three 8-                bit value。也可以是Vec2b,Vec4b。返回的为一个向量

           2)灰度图片:image.at<uchar>(y,x)

       3.2图像的通道问题:image.channels()

           1)灰度图的通道数为1,彩色图的通道为3.

           2)通道通常为RGBA,A表示alpha,即透明度

           3)目前常见的一些摄像头喜欢采用YUV2等格式,格式如下YUYV,在处理的时候可以用4通道或者2通道来处理。如原格式                   为:Y1UY2V,插值成为Y1UV,Y2UV就成两个彩色点了。

       3.3 访问像素临近区域

            1)image.ptr<uchar>(i), 返回图片image 第i行的首地址,注意是行地址

       3.4 ROI区域的设置(对ROI的操作将会影响原图像,引用!)

            1)imageROI=image(cv::Rect(385,270,logo.cols,logo.rows));

            2)Mat imageROI=

i         mage(cv::Range(270,270+logo.rows),cv::Range(385,385+logo.cols))

            3)定义某行或某列为ROI

               cv::Mat imageROI=image.rowRange(start,end) ;

               cv::Mat imageROI=image.colRange(start,end) ;


参考:  http://blog.csdn.net/xiaojiegege123456/article/details/8464954

           http://blog.csdn.net/poem_qianmo/article/details/21479533

posted on 2014-07-13 20:58  攻城狮凌风  阅读(310)  评论(0编辑  收藏  举报

导航