From: http://www.cnblogs.com/xylc/p/3406026.html

本模块为跨平台的gui/IO组件,支持平台包括windows,linux,mac,IOS,android,可支持图像/视频/摄像头的读取显示以及转码。


本模块为跨平台的gui/IO组件,包括如下图所示文件:

unsw@unsw-UX303UB$ tree -L
.
├── CMakeLists.txt
├── doc
│   ├── highgui.rst
│   ├── pics
│   │   └── qtgui.png
│   ├── qt_new_functions.rst
│   ├── reading_and_writing_images_and_video.rst
│   └── user_interface.rst
├── include
│   └── opencv2
│   ├── highgui
│   │   ├── cap_ios.h
│   │   ├── highgui_c.h
│   │   ├── highgui.hpp
│   │   └── ios.h
│   └── highgui.hpp
├── perf
│   ├── perf_input.cpp
│   ├── perf_main.cpp
│   ├── perf_output.cpp
│   └── perf_precomp.hpp
├── src
│   ├── agile_wrl.h
│   ├── bitstrm.cpp
│   ├── bitstrm.hpp
│   ├── cap_android.cpp
│   ├── cap_avfoundation.mm
│   ├── cap_cmu.cpp
│   ├── cap.cpp
│   ├── cap_dc1394.cpp
│   ├── cap_dc1394_v2.cpp
│   ├── cap_dshow.cpp
│   ├── cap_ffmpeg_api.hpp
│   ├── cap_ffmpeg.cpp
│   ├── cap_ffmpeg_impl.hpp
│   ├── cap_giganetix.cpp
│   ├── cap_gstreamer.cpp
│   ├── cap_images.cpp
│   ├── cap_intelperc.cpp
│   ├── cap_ios_abstract_camera.mm
│   ├── cap_ios_photo_camera.mm
│   ├── cap_ios_video_camera.mm
│   ├── cap_libv4l.cpp
│   ├── cap_mil.cpp
│   ├── cap_msmf.cpp
│   ├── cap_msmf.hpp
│   ├── cap_openni.cpp
│   ├── cap_pvapi.cpp
│   ├── cap_qt.cpp
│   ├── cap_qtkit.mm
│   ├── cap_tyzx.cpp
│   ├── cap_unicap.cpp
│   ├── cap_v4l.cpp
│   ├── cap_vfw.cpp
│   ├── cap_ximea.cpp
│   ├── cap_xine.cpp
│   ├── ffmpeg_codecs.hpp
│   ├── files_Qt
│   │   ├── Milky
│   │   │   ├──
│   │   │   │   ├── .png ...
│   │   │   ├──
│   │   │   │   ├── .png ...
│   │   │   └── README.txt
│   │   └── stylesheet_trackbar.qss
│   ├── grfmt_base.cpp
│   ├── grfmt_base.hpp
│   ├── grfmt_bmp.cpp
│   ├── grfmt_bmp.hpp
│   ├── grfmt_exr.cpp
│   ├── grfmt_exr.hpp
│   ├── grfmt_imageio.cpp
│   ├── grfmt_imageio.hpp
│   ├── grfmt_jpeg2000.cpp
│   ├── grfmt_jpeg2000.hpp
│   ├── grfmt_jpeg.cpp
│   ├── grfmt_jpeg.hpp
│   ├── grfmt_png.cpp
│   ├── grfmt_png.hpp
│   ├── grfmt_pxm.cpp
│   ├── grfmt_pxm.hpp
│   ├── grfmts.hpp
│   ├── grfmt_sunras.cpp
│   ├── grfmt_sunras.hpp
│   ├── grfmt_tiff.cpp
│   ├── grfmt_tiff.hpp
│   ├── ios_conversions.mm
│   ├── loadsave.cpp
│   ├── ppltasks_winrt.h
│   ├── precomp.hpp
│   ├── utils.cpp
│   ├── utils.hpp
│   ├── window_carbon.cpp
│   ├── window_cocoa.mm
│   ├── window.cpp
│   ├── window_gtk.cpp
│   ├── window_QT.cpp
│   ├── window_QT.h
│   ├── window_QT.qrc
│   └── window_w32.cpp
└── test
├── test_basic_props.cpp
├── test_drawing.cpp
├── test_ffmpeg.cpp
├── test_fourcc.cpp
├── test_framecount.cpp
├── test_grfmt.cpp
├── test_gui.cpp
├── test_main.cpp
├── test_positioning.cpp
├── test_precomp.hpp
├── test_video_io.cpp
└── test_video_pos.cpp

头文件:

ios.h,cap_ios.h ,  IOS平台相关事件,跳过分析;

highgui_c.h , C/C++兼容头文件,定义了窗口控件相关的flag、实现函数;图像输入输出显示的相关函数;视频摄像头输入输出显示的相关函数;

highgui.hpp , C++ only头文件,定义了创建窗口的flag,窗口事件的flag,Qt窗口的flag,事件回调函数原型,以及窗口/控件操作相关的系列函数,openGL的包装函数;图像输入输出显示的相关函数;视频摄像头输入输出显示的相关函数,VideoCapture,VideoWriter;


实现文件:

grfmts/*.* , 内含多种格式图像的支持,grfmt_xxx.hpp/grfmt_xxx.cpp,可在此目录中添加自定义/其他格式的图像读取保存支持;

cap.cpp , CvCapture操作相关的实现函数,可创建基于File或者camera的CvCapture;VideoCapture,CvVideoWriter操作相关的实现函数,可创建基于vfw,dshow,msMF,ffmpeg,gstreamer,quicktime,avfoundation等框架的视频流文件,或者图像文件;

cap_cmu.cpp , 基于cmu1394接口的camera于opencv的抽象实现,实现了一个基于cmu1394的CvCaptureCAM_CMU;

cap_dshow.cpp , 基于dshow框架的camera于opencv的抽象实现,定义了camera的枚举,视频帧的获取等操作,实现了一个基于dshow的CvCaptureCAM_DShow;

cap_ffmpeg.cpp , 基于ffmpeg框架的camera于opencv的抽象实现,这个文件是ffmpeg与CvCapture,CvVideoWriter接口之间的一个代理,实际的实现在cap_ffmpeg_impl.cpp中,代理为CvCapture_FFMPEG_proxy和CvVideoWiriter_FFMPEG_proxy;

cap_ffmpeg_api.hpp,cap_ffmpeg_impl.cpp , 定义实现了CvCapture_FFMPEG,CvVideoWriter_FFMPEG,InputMediaStream_FFMPEG/OutputMediaStream_FFMPEG;

cap_images.cpp , 定义实现了基于图像集的CvCapture_Images和CvVideoWriter_Images实现;

cap_vfw.cpp , 定义实现了基于vfw框架的camera于opencv的抽象实现CvCaptureAVI_VFW(仅用于AVI),CvCaptureCAM_VFW,CvVideoWriter_VFW;

loadsave.cpp , 定义了图像codec集合;imread,imwrite,imencode,imdecode的实现;cvLoadImage,cvSaveImage,cvEncodeImage,cvDecodeImage的实现,此4个函数基于imread函数族;

precomp.cpp,precomp.hpp , 定义CvCapture,CvVideoWriter,以及一系列的create API;这个头文件同时是类似于stdafx的预编译头文件;

utils.hpp/utils.cpp , 定义了BGR2Gray,Gray2BGR,BGRA2RGBA,CMYK2Gray等类型的函数(注:此处与imgproc中的颜色空间转换不同,这里仅是RGB颜色空间中的相关调整操作),以及FillColorRow8等填充函数;

window.cpp  ,实现了窗口/控件/事件/回调的操作函数,包括win32(Windows),QT(跨平台),gtk(Linux),carbon(Mac)窗口系统的实现;

window_w32 ,windows平台的窗口/控件/事件/回调的实现;

window_QT.cpp,window_gtk.cpp,window_carbon.cpp,window_cocoa.mm 相应平台的窗口/控件/事件/回调的实现;


待续 。。。

[OpenCV] HighGUI的更多相关文章

  1. opencv_java import org.opencv.highgui.Highgui,类中无imread方法

    opencv_java import org.opencv.highgui.Highgui,提示错误 2018年01月19日 14:50:25 小码农的路程 阅读数:358   原因:1.OpenCV ...

  2. OpenCV —— HighGUI

    分为:硬件相关部分,文件部分以及图形用户接口部分 创建窗口 —— cvNamedWindow 若设置成 CV_WINDOW_AUTOSIZE 窗口大小会随着图像的载入而根据图像大小调整,用户没办法手动 ...

  3. 树莓派上Opencv highgui的问题

    错误描述:https://bbs.csdn.net/topics/394616975?page=1#post-409508178 解决方案:直接改系统环境变量 # vim /etc/profile e ...

  4. opencv在图像显示中文

    在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母.矩形框等(opencv支持的)或者是中文汉字(借助freetype). 1.显示数字/矩形框 #include <op ...

  5. Atitit 图像处理 调用opencv 通过java  api   attilax总结

    Atitit 图像处理 调用opencv 通过java  api   attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...

  6. opencv 抠图联通块(c接口)

    #include "stdio.h" #include "iostream" #include "opencv/cv.h" #include ...

  7. opencv基于混合高斯模型的图像分割

    #include "stdafx.h" #include <opencv\cv.h> #include <opencv\highgui.h> #includ ...

  8. opencv统计二值图黑白像素个数

    #include "iostream" #include "queue" #include "Windows.h" #include < ...

  9. Opencv CamShift+Kalman目标跟踪

    #include "stdio.h" #include "string.h" #include "iostream" #include &q ...

随机推荐

  1. Spring基于注解及SpringMVC

    1.使用注解 (1)组件扫描 指定一个包路径,Spring会自动扫描该包 及其子包所有组件类,当发现组件类定义前有 特定的注解标记时,就将该组件纳入到Spring 容器.等价于原有XML配置中的< ...

  2. Spring第一天

    Spring框架 1.1:了解Spring Spring的核心是提供了一个容器,主要通过 BeanFactory(接口)来创建和管理对象,一般我们用它的子类ApplicationContext 来创建 ...

  3. Arduino单片机使用和开发问题记录

    1.将程序上传到板子时Arduino IDE提示“avrdude: stk500_getsync(): not in sync: resp=0x00” 网上查遇到这个问题的人比较多,有说驱动问题的,有 ...

  4. linux下IPTABLES配置详解(转)

    如果你的IPTABLES基础知识还不了解,建议先去看看. 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables - ...

  5. Why Apache Spark is a Crossover Hit for Data Scientists [FWD]

    Spark is a compelling multi-purpose platform for use cases that span investigative, as well as opera ...

  6. react native TypeError network request failed

        如果使用fetch获取数据,用的是POST方法,注意headers要添加请求头.当请求为GET时不能用body,当为POST时必须包含body,设置头部之后就一切正常了.   fetch(&q ...

  7. 小白学数据分析----->留存率与运营活动分析_I

    有关留存率的事情最近扯得比较多,因为在分析数据的时候,越发觉得,分析一定是要来解决问题的,留存率不知何时突然变得流行了,在此讨论留存率倒不是因为流行,而是觉得以留存率为核心,的确是可以帮助我们解决不少 ...

  8. #入魔这些年#零度智控&模型控社区大型征文活动,万元大奖等你拿

        玩航模是个好爱好,它能培养严谨的科学态度.超强的DIY动手能力.规范的项目管理习惯.良好的沟通合作技巧.过人的三维空间思维和感知: 你需要的知识储备有力学.空气动力学.电子学.通讯工程.材料学 ...

  9. GTD时间管理---非行动性

    一:行动性和非行动有什么区别? 1:非行动性:指的是收集箱中的信息,是先存储后使用,这些信息平时都处于冬眠状态,只是要用到的时候能够找到它就好了.(偏向于处理生活) 2:行动性: 指的是收集箱中的信息 ...

  10. Think in java 4th读书笔记__last update20151130

    一周至少两章,去掉最后的并发和图形化用户界面,刚好需要2个半月才能学好.这进度感觉有点慢,所以做下调整吧,改成一个月会不会更好点^^,认认真真的把java的圣经给看一遍. 计划: 第1~6 11.17 ...