[OpenCV] HighGUI

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

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



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

[email protected]$ 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 相应平台的窗口/控件/事件/回调的实现;



待续 。。。

时间: 2024-11-08 00:53:16

[OpenCV] HighGUI的相关文章

[1]OpenCV highgui

通过HighGUI(high-level graphical user interface)可以实现打开窗口.显示图像.读出和写入图像文件,处理鼠标.光标.键盘事件. 而HighGUI主要分成“视频输入/输出”.“图像输入/输出”和“GUI工具”,分别在cacap*.grfmt*和window*源文件中实现. 先来介绍UI,包括函数createTrackbar.getTrackbarPos.setTrackbarPos.imshow.namedWindow.destroyWindow.destr

树莓派上Opencv highgui的问题

错误描述:https://bbs.csdn.net/topics/394616975?page=1#post-409508178 解决方案:直接改系统环境变量 # vim /etc/profile export QT_QPA_PLATFORMTHEME=gtk3 原文地址:https://www.cnblogs.com/bodom/p/11738402.html

Opencv 笔记 opencv tutorial 2.1节 mat

前言:opencv中,mat类型非常基础和重要.以下是opencv tutorial 2.1章节的中英文整理. Mat 简介 IplImage c 结构 需要管理内存 mat是c++中的类class 自动内存分配 Mat  包括: header A pointer to the matrix containing the pixel values  (can take dimentionlity 根据存储方法) 头大小不变  矩阵大小变 复制数据的速度由矩阵大小决定 将图像传给函数是常见做法 图

OpenNI1.5获取华硕XtionProLive深度图和彩色图并用OpenCV显示

华硕XtionPro类似Kinect,都是体感摄像机,可捕捉深度图和彩色图, 详细参数见:http://www.asus.com.cn/Multimedia/Xtion_PRO_LIVE/specifications/ 实验设定的深度图和彩色图大小都是640*480,如下: 彩色图 未配准时的深度图 配准到彩色图后的深度图 深度图配准到彩色图后的1:1融合图 彩色图配准到深度图后的1:1融合图 代码: #include <stdlib.h> #include <iostream>

OpenCV采集的视频流转化成H264格式裸码流

本文通过OpenCV库采集摄像头视频,随后通过libx264库把帧转化成264格式的码流. 头文件: #ifndef _X264_ENCODER_H #define _X264_ENCODER_H #include <stdint.h> #include "x264.h" #include "opencv/cv.h" #include "opencv/highgui.h" struct x264_encoder{ x264_param

win7 64bit VS2010 OpenCV 2.4.9 环境配置

作者 : 卿笃军 由于最近人脸识别需要用到OpenCV,让我开始了OpenCV学习. OpenCV 2.4.9下载地址:http://sourceforge.net/projects/opencvlibrary/ 点击图中的Download即可下载. 下载完毕后,得到一个348M的 "opencv-2.4.9.exe" 文件,双击运行,它会询问你解压到哪里,你可以直接解压在 E:盘.(我就直接解压在E:盘根目录下). 这里就会在E:盘根目录下得到一个 opencv 文件夹. 下面说明环

Atitit 图像处理 调用opencv 通过java &#160;api &#160;&#160;attilax总结

Atitit 图像处理 调用opencv 通过java  api   attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1.2. 安装2016-05-19  opencv v2.4.13   267M  ,一个压缩包解压即可1 1.3. Opencv d java 接口api  ,把opencv-2413.jar加入java项目1 1.4. /AtiPlatf_ee/src/com/attilax/img/SfitTes

java 在centos6.5+eclipse环境下调用opencv实现sift算法

java 在centos6.5+eclipse环境下调用opencv实现sift算法,代码如下: import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfKeyPoint; import org.opencv.highgui.Highgui; import org.opencv.features2d.*; public class ExtractSIFT{ public static

MFC中利用OpenCV实现视频播放

近期项目中在学习全景相机相关知识 当然首先要开始将基本的MFC学会才能封装SDK 首先建立MFC对话框工程 具体的详细知识就不说了,网上有很多的教程. 添加如下控件 中间显示部分是picture control控件 采用定时器更新picture 显示框 首先包含opencv相关的头文件,在CUpanoCameraDlg.h中添加以下变量 private: CRect rect; CStatic* pStc; //标识图像显示的Picture控件 CDC* pDC; //视频显示控件设备上下文 H