• 2017-9-15Opencv 杂


    Mat::at()的具体含义。指的是三通道。(0),(1),(2)分别表示BGR;

    Vector<Mat>结构的使用。将Mat类型的数据转化成了具有多个单通道的容器?

    灰度图的具体含义。和单通道的区别。灰度图即是单通道图,表示只有一个通道有值,那此时不应该是显示为这个通道的颜色吗?

    Mat bw = threshval < 128 ? (img < threshval) : (img > threshval);这里的用法 img 是一个Mat的对象,由于Mat重载了operator.因此 img<threshval) 的意思是二值化。

    C++: int createTrackbar(conststring& trackbarname, conststring& winname,
    int* value, int count, TrackbarCallback onChange=0,void* userdata=0);
    第一个参数,const string&类型的trackbarname,表示轨迹条的名字,用来代表我们创建的轨迹条。
    第二个参数,const string&类型的winname,填窗口的名字,表示这个轨迹条会依附到哪个窗口上,即对应namedWindow()创建窗口时填的某一个窗口名。
    第三个参数,int* 类型的value,一个指向整型的指针,表示滑块的位置。并且在创建时,滑块的初始位置就是该变量当前的值。
    第四个参数,int类型的count,表示滑块可以达到的最大位置的值。PS:滑块最小的位置的值始终为0。
    第五个参数,TrackbarCallback类型的onChange,首先注意他有默认值0。这是一个指向回调函数的指针,每次滑块位置改变时,这个函数都会进行回调。并且这个函数的原型必须为void XXXX(int,void*);其中第一个参数是轨迹条的位置,第二个参数是用户数据(看下面的第六个参数)。如果回调是NULL指针,表示没有回调函数的调用,仅第三个参数value有变化。
    第六个参数,void*类型的userdata,他也有默认值0。这个参数是用户传给回调函数的数据,用来处理轨迹条事件。如果使用的第三个参数value实参是全局变量的话,完全可以不去管这个userdata参数。
    这里是一个相互的过程,第五个参数是用户自己写的函数,结构要求传入两个参数,其中第一个为进度条目前位置,可用做在用户函数中使用,第二个参数为用户传入的参数,可以不传入。传入的方式就是写在第六个参数上。


    图像像素的访问方式
    为了访问图像的每一个像素,我们使用这样的语法: image.at<Vec3b>(y,x)[c]
    其中,y是像素所在的行, x是像素所在的列, c是R、G、B(对应0、1、2)其中之一。
    因为我们的运算结果可能超出像素取值范围(溢出),还可能是非整数(如果是浮点数的话),所以我们要用saturate_cast对结果进行转换,以确保它为有效值。

    图片的亮度和对比度的调整(像素点操作,分别对三个通道进行的操作)g(i,j)=a*f(i,j)+b;其中a可以提高对比度,b可以提高亮度。

  • 相关阅读:
    递归
    二叉树
    IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案)
    Python时间,日期,时间戳之间转换
    jquery 时间戳和日期时间转化
    javascript 中解析json
    设计模式之单例模式
    深入理解DIP、IoC、DI以及IoC容器
    《大型网站技术架构》读书笔记一:大型网站架构演化
    Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
  • 原文地址:https://www.cnblogs.com/xmu-rcs-jty/p/7527690.html
Copyright © 2020-2023  润新知