#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace cv;

图像载入、显示、输出到文件

图像载入:imread()函数

原型:

 Mat imread(const string& filename, int flag=);

(1)第一个参数,载入的图片路径名。

(2)第二个参数为载入标识,在opencv标识图像格式的枚举体中取值,指定一个加载图像的颜色类型。默认载入三通道的彩色图像。

 CV_LOAD_IMAGE_UNCHANGED = -; //新版本废弃
CV_LOAD_IMAGE_GRAYSCALE = ; //将图像转换为灰度再返回
CV_LOAD_IMAGE_COLOR = ; //图像转换到彩色再返回
CV_LOAD_IMAGE_ANYDEPTH = ; //载入图像为16位或32位,就返回对应深度图像,否则转换为8位图像再返回
CV_LOAD_IMAGE_ANYCOLOR = ; CV_LOAD_IMAGE_COLOR | CV_LOAD_IMAGE_ANYCOLOR; //1|4 载入三通道图
CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR; //2|4 载入真实无损的源图像

flags是int型变量,不再枚举体中取值,则:

  • flags>0返回一个3通道彩色图像
  • flags=0返回灰度图
  • flags<0返回包含Apha通道(透明色)的加载图像

图像显示:imshow()函数

void imshow(const string& winname, InputArray mat)

(1)第一个参数,需要显示的窗口标识名称

(2)第二个参数,需要显示的图像,当做Mat类即可

imshow函数用于在指定的窗口中显示图像,如果窗口是用CV_WINDOW_AUTOSIZE(默认值)创建的,就显示图像原始大小,否则将图像进行缩放以适应窗口。

创建窗口:namedWindow()函数

若简单的图片显示就不用这个函数,但需要显示窗口之前就用到窗口名时,例如滑动条就要制定依附到某个窗口上,就需要这个函数先创建出窗口,显式的规定窗口名称。

namedWindow函数是通过指定的名字,创建一个可以作为图像和进度条的容器窗口,如果具有相同名称的窗口已经存在,则函数不做任何事情。

void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE);

(1)被用作窗口的标识符的窗口名称

(2)窗口标识:

 WINDOW_NORMAL = ; //可改变窗口的大小,CV_WINDOW_NORMAL
WINDOW_AUTOSIZE = ; //窗口大小会自动调整以适应所显示的图像,用户不能手动改变窗口大小,CV_WINDOW_AUTOSIZE
WINDOW_OPENGL = ; //窗口创建时会支持OpenGL,CV_WINDOW_OPENGL

可用通过destroyWindow()或destroyAllWindow()函数关闭创区,并取消之前分配的与窗口相关的所有内存空间。

输出图像到文件:imwrite()函数

imgwrite函数用于将图像保存到指定的文件,图像格式是基于文件扩展名的,可保存的扩展名和imread中可以读取的图像扩展名一致。

bool imwrite(const string& filename, InputArray img, cost vector<int>& params=vector<int>() );

(1)需要写入的文件名,带后缀;

(2)Mat类型的图像数据

(3)const vector<int>&类型的params,表示为特定格式保存的参数编码,默认值vector<int>(),一般情况下不用填写,如果需要的话:

  • JPEG,这个参数表示0~100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95
  • PNG,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION),0~9,默认值3。较高的值意味着更小的尺寸和更长的压缩时间
  • PPM/PGM/PBM,这个参数表示一个二进制格式标志(CV_IMWRITE_BINARY),取值0或1,默认1。

滑动条的创建和使用

创建滑动条:createTrackbar()函数

创建一个可以调整数值的滑动条,并将滑动条附加到指定的窗口上,往往会和一个回调函数配合起来使用。

 int creatTrackbar(const string& trackbarname, const string& winname, int* value, int count, TrackbarCallback onChange=, void* userdata=)

(1)const string&类型的trackbarname,轨迹条的名字

(2)cosnt string&类型的winname,窗口的名字

(3)int*类型的value,指向整型的指针,表示滑块的位置,创建时,滑块的初始位置就是该变量当前的值;

(4)int类型的cout,滑块可以到达的最大位置的值,滑块的最小位置始终为0;

(5)TrackbarCallback类型的onChange,默认值0。指向回调函数的指针,回调函数原型必须为 void xxxx(int, void*),第一个参数是轨迹条的位置,第二个参数是用户数据。如果回调是NULL指针,表示没有回调函数的调用,仅value有变化。

(6)void*类型的serdata,默认值0。用户传给回调函数的数据,处理轨迹条事件。如果value实参是全局变量,不用管userdata。

获得当前轨迹条的位置:getTrackbarPos()函数

int getTrackbarPos(const string& trackbarname, const string& winname);

(1)const string&类型的trackbarname,轨迹条的名字

(2)const string&类型的winname,轨迹条父窗口的名字;

鼠标操作

类似于滑动条的消息映射方式,都是通过一个中介函数配合一个回调函数来说显得。指定鼠标操作回调函数的函数为SetMouseCallback:

 void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata=)

(1)const string&类型的winname,窗口名字;

(2)MouseCallback类型的onMouse,指定窗口里的每次鼠标时间发生的时候,被调用的函数指针。

这个函数的原型为void Foo(int event, int x, int y, int flags, void* param),其中event是EVENT_+(opencv2中CV_ENENT_+)变量之一,x和y是鼠标指针在图像坐标系(不是窗口坐标系)中的坐标值,flags是EVENT_FLAG的组合,param是用户定义的出传递到SetMouseCallbace函数调用的参数。

EVENT_MOUSEMOVE为鼠标移动消息,EVENT_LBUTTONDOWN为鼠标左键按下消息。

(3)void*类型的userdata,用户定义的传递到回调函数的参数,默认值0

highGUI图形用户界面的更多相关文章

  1. opencv学习HighGUI图形用户界面初步【1】

    HighGUI是图形用户界面模块.包括:1.输入与输出:2.视频捕捉:3.图形和视频的解码编码:4.图形交界面与接口. 由于opencv.hpp包含了core.objdetect.ingproc.ph ...

  2. HighGUI 图形用户界面

    参考 自opencv3编程入门一书 图形用户界面主要内容包括图像载入,显示和输出到文件 在opencv1.0时代 图像的存储结构体都是IplImage × 在2.0以后,采用Mat 类作为图像存储的数 ...

  3. opencv 1 HighGUI图形用户界面初步

    1图像载入 显示和输出到文件 Opencv的命名空间 Mat类 图像的载入:imread()函数 图片的显示:imshow()函数 创建窗口:namedWindow()函数 输出图像到文件:imwri ...

  4. HighGUI图形图像界面初步—— 图像的载入、显示与输出

    HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出.视频捕捉.图像和视频的编解码.图形交互界面的接口等. 在本章中,我们将学到: 图像的载入.显示和输出到文件的详细分析 滑动条的创建和 ...

  5. GUI(图形用户界面)

    ylbtech-Miscellaneos:GUI(图形用户界面) A,返回顶部 1, 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显 ...

  6. ubuntu不能登录图形用户界面,游客身份可登陆,命令行可登陆

    ubuntu是13.04版本,我猜其他的版本解决办法大概也一样.当开机进入登陆界面后我们输入密码后并没有进入应该进入的图形用户界面,而是进入一个命令行界面并且一闪而过又回到了登录界面,而已游客的身份却 ...

  7. 黑马程序员——【Java基础】——GUI(图形用户界面)

    ---------- android培训.java培训.期待与您交流! ---------- 一.概述 1.GUI(GraphicalUser Interface):又称图形用户界面,是计算机用户与计 ...

  8. java-GUI图形用户界面

    图形用户界面GUI(Graphical User Interface),指的是在一个程序中用户可以看到的和与之交互的部分. JavaAPI中提供两套组件用于支持编写用户界面AWT  and  Swin ...

  9. MATLAB学习笔记(十一)——MATLAB图形用户界面设计

    (一)菜单设计 一.建立用户菜单 1.概况: 用户菜单一般含有一级菜单和二级菜单,乃至多级菜单.每一级菜单又包含多个菜单项.建立菜单可以使用uimenu函数. 2.uimenu函数调用: %建立一级菜 ...

随机推荐

  1. 133.throw机制 抛出类类型

    #include <iostream> using namespace std; //try尝试执行,抛出throw,throw之后语句不再执行 //catch处理throw的异常 voi ...

  2. VC6.0 设置动态链接库工程生成dll以及lib文件的位置

    在"Projet"->"Settings..."的"Link"选项卡中 "Output file name"中设置 ...

  3. java高级——生产者消费者问题

    多线程是一个很重要的应用,本节讲述多线程中同步问题 public class ThreadDemo { public static void main(String[] args) { Resourc ...

  4. 蛋白质GO信息的一些数据库

    最近用到蛋白质序列数据,但是才发现蛋白质的编号主要分为两种:一种是ENSP开头,主要是在ensembl数据库查询asia.ensembl.org/Human/Search:而另一种是uniprot.w ...

  5. jq 鼠标点击跳转页面后 改变点击菜单的样式代码

    点击菜单跳转页面,然而跳转后的页面字体并没有加粗用如下代码 <div class="bg01 menu"> <img class="img01" ...

  6. linux系统利用GPU跑数据(tensorflow)

    https://blog.csdn.net/qq_26591517/article/details/82469680 查看机器上GPU情况 命令: nvidia-smi 功能:显示机器上gpu的情况 ...

  7. js指定区域全屏

    <html>     <head>         <title>js指定区域全屏</title>         <style>      ...

  8. linux上测试磁盘IO速度

    运维工作,经常要测试服务器硬件性能,以此来判断是否存在性能瓶颈. 下面介绍在linux上测试磁盘IO速度的工具: 1.hdparm CentOS中,安装的两种方法: 1) yum安装. # yum i ...

  9. CF1015F Bracket Substring (KMP+DP)

    题目大意:给你一个长度为$n$的括号序列$T$,要求你构造一个长度为$2n$的括号序列$S$,保证这个括号序列在插入数字后一定是正确的,并且$T$是$S$的一个子串 还以为是什么纯粹的数学构造题,一通 ...

  10. caioj 1155 同余方程组(模版)

    第一步,和同余方程一样,转化一下 两式相减得 这就转化为了求不定方程,用exgcd 求出x,要化成最小正整数解,避免溢出 然后可以求出P出来. 这个时候要把前两个式子转化成一个式子 设求出来的是P' ...