这几天学的很乱,我是STM32与OPENCV同时学的,OPENCV看的比较多,想边学边写博客的,但是总是为了琐事耽搁了,马上也要开学了,要线上教学了,会比较忙,趁着现在还没有开学,先写几篇博客回忆一下之前学的东西。OPENCV3编程入门的书因为比较大无法上传所以可以加我的QQ小号索取这本书的pdf以及配套的例程:1115829943 ps.网上CSDN有的资料不是下载不了嘛,可以在淘宝上搜索CSDN下载器,不论文件的大小价值,通通都是1元,很划算。因为这本书前两章都是OPENCV3介绍性的东西,所以从第三章开始,话不多说,开始我的回忆。
HIGHGUI图形用户界面初步
首先概念
Mat类:
这本书并没有详细的介绍,其实Mat就是Matrix的缩写,我们都知道Matrix是矩阵的意思,而矩阵又是我们保存图像的主要方法,所以在OPENCV3中,当我们要保存一个图像时,都要定义Mat类的变量保存它。一个例子Mat m=Mat(200,300,CV_8UC3,Scalar(0,0,255)); 200是行(rows),300是列(cols),CV_8UC3代表着图像的深度(depth)是8位,UC是unsigned char 的意思,3代表着通道。然后Mat类有许多可以调用的函数,然后功能跟函数名一致,在此大家可以到OPENCV的官网中找到。比如clone()函数是复制原图像,注意如果Mat B =A,代表着B和A都是指向着同一个保存图像的内存空间,对B的操作也是对A的操作。
图像的载入与显示:
imread() 第一个参数是文件名,然后第二个参数是读取的方式,0代表将图像转化为灰度图像读取,1代表着彩色图像读取,2 代表着任意深度,4代表着任意颜色 {0,1,2,4}都是枚举值,具体定义可以看库函数。如果是其他的值,比如大于0的不是上述的值代表着返回一个通道的彩色图像。
imshow() 第一个参数是WINDOW_NAME ,输出窗口的名字,第二个参数是输出的图像
namedWindow:创建一个窗口,第一参数窗口名,作为唯一的标志符。第二个参数是窗口的设置 WINDOW_NORMAL(用户可以改变窗口的大小,图像会随着窗口的改变自适应的进行改变)WINDOW_AUTOSIZE(窗口自动适应图像) 注意WINDOW_AUTOSIZE与WINDOW_NORMAL共同作用时,窗口是不可以改变大小的,然后destroyWindow等等可以消除窗口.
imwrite() 将图像写入到文件中,第一个参数是文件名(记住要加上后缀名),第二个参数是输出的图像 第三个参数可以不写(是JPG,PNG等等参数的设置)
InputArray/OutputArray 类型: 可以简单的认为是一个Mat类型。
滑动条的创建和使用:
创建滑动条:
createTrackBar() 第一个参数:滑动条的名字, 第二个参数:窗口的名字 第三个参数 控制的变量(指针类型的) 第四个参数:变量的最大值 第五个参数是回调函数(回调函数的类型必须是void XXXX(int ,void*)类型 ,第六个参数如果控制的变量是全局变量可以忽略,作用是将变量的值传递给回调函数,形式:(void*)&value。
getTtackbarPos()获取当前滑动条的变量值
鼠标操作:SetMousecallback(conststring& winname,MouseCallback onMouse,void* userdata=0)
第一个参数:窗口的名字;
第二个参数回调函数,回调函数的大概的形式是 void FOO (int event,int x,int y, int flags,void* param) 第一个参数是 EVENT_变量 ,第二三个参数是鼠标指针在坐标系的位置,第四个参数是EVENT_FLAG_变量,最后一个是调用的参数。
第三个参数是回调函数中需要的参数。
以上便是OPENCV3入门第三章的回忆内容,本随笔写的比较粗糙,主要是本人用来回忆用的,也许会对你的学习有所帮助。
原文:https://www.cnblogs.com/wxb1314520/p/12312833.html