Learning OpenCV 计算机视觉基础知识以及OpenCV源码学习

标签: 计算机视觉 opencv
11人阅读 评论(0) 收藏 举报
分类:

摘要

        这次主要介绍计算机视觉方面的基础知识,并且学会使用OpenCV核心数据结构Mat类,学会用OpenCV做视频的读取和控制。

图像基础知识

        一张图片的组成:文件标识+数据块

                            文件标识包括:文件签名、维数、高度、宽度、深度、通道数、颜色格式、数据首地址、结束地址、数据量等等

       常见的图片格式:JPEG,PNG,BMP,TIFF 本质都是图片的压缩编码格式

       图片通道数:

                    单通道:描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道。

                    三通道:描述一个像素点,有三种颜色来描述,RGB,就是三通道。

                    四通道:RBG加上一个A通道,表示透明度,一般叫做alpha通道,表示透明度的

                    二通道:不常见,但在图像处理中可能会用到,如傅里叶变化,可能用到一个通道是实数,一个通道是虚数,为了编程方便。


视频基础知识

        原始视频 = 图片序列 视频中的每一张有序图片成为帧。

        压缩后的视频,会采取各种算法减少数据的容量,其中IPB就是最常见的。

        I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)
        P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)

        B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累~。

        码率:

                码率越大,体积越大;码率越小,体积越小。                

             码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。也就是取样率(并不等同与采样        率,采样率的单位是Hz,表示每秒采样的次数),单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来cbr(固定码率)与vbr(可变码率), “码率”就是失真度,码率越高越清晰,反之则画面粗糙而多马赛克。

                1.码率计算公式:

                    码率=采样率 x 位深度 x 声道

                2.文件大小 = 码率 x 时长

        帧率

                影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。
帧率就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次。

        分辨率

                    影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小       

OpenCV源码结构学习

    

OpenCV可扩展性特别好,就是因为这种架构,让一个复杂的系统做到了解耦,利于维护


Mat学习

查看评论

学习OpenCV(中文版)含书中例子源码素材

  • 2016年04月28日 23:23
  • 33.13MB
  • 下载

深入理解OpenCV 实用计算机视觉项目解析-源代码

  • 2017年10月17日 09:55
  • 41MB
  • 下载

学习opencv中文版及随书源码

  • 2013年04月06日 09:13
  • 43.44MB
  • 下载

OpenCV中值得学习的知识

综述 OpenCV 将一些成熟以及有效的计算机视觉算法进行了封装,因此我们可以通过直接使用OpenCV的API直接使用这些计算机视觉算法,并将其应用在我们的Project中。此方法可节约开发者或者研究...
  • orionpeng
  • orionpeng
  • 2017-04-20 14:47:35
  • 330

学习Opencv第十二章立体匹配源代码

#include "cv.h" #include "cxmisc.h" #include "highgui.h" //#include "cvaux.h" #include #include #i...
  • hx_ywzq
  • hx_ywzq
  • 2015-06-01 10:00:42
  • 1662

深入理解OpenCV:实用计算机视觉项目解析 - 源代码

  • 2016年01月21日 00:29
  • 36.83MB
  • 下载

opencv入门学习,LearningOpenCV英文版+学习OpenCV中文版+书中例程

  • 2014年04月26日 16:31
  • 42.11MB
  • 下载

计算机视觉实战:如何使用OpenCV快速构建视觉应用

本次公开课讲师屈老师是哈尔滨工业大学副教授,视觉技术研究室负责人。课程会介绍计算机视觉的基本概念、系统基本构成及各要素。并使用OpenCV,带领大家从零开始一步一步的搭建一个简单但可用的实际的视觉跟踪系统,使大家从中学习视觉系统的构建及OpenCV系统实现。
  • 2017年08月03日 14:23

OpenCV 3计算机视觉:Python语言实现(第2版,中文版pdf+英文版pdf+配书代码三合一)

  • 2018年03月19日 10:07
  • 58.59MB
  • 下载

Machine Learning学习路线

声明:本文为转载! 和机器学习和计算机视觉相关的数学:http://blog.renren.com/blog/221579461/723942980 来源: 吴松涛的日志  1. 线性代数 (L...
  • caicai_zju
  • caicai_zju
  • 2015-10-27 20:25:25
  • 2161
    个人资料
    等级:
    访问量: 3万+
    积分: 39
    排名: 195万+
    博客专栏
    文章分类
    文章存档
    读书笔记