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