[OpenCV] HighGUI
From: http://www.cnblogs.com/xylc/p/3406026.html
本模块为跨平台的gui/IO组件,支持平台包括windows,linux,mac,IOS,android,可支持图像/视频/摄像头的读取显示以及转码。
本模块为跨平台的gui/IO组件,包括如下图所示文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
unsw@unsw-UX303UB$ tree -L 9 . ├── 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 │ │ │ ├── 48 │ │ │ │ ├── 1.png ... │ │ │ ├── 64 │ │ │ │ ├── 1.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 相应平台的窗口/控件/事件/回调的实现;
待续 。。。