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

摘要

        这次主要介绍计算机视觉方面的基础知识,并且学会使用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源码结构学习

    Learning OpenCV 计算机视觉基础知识以及OpenCV源码学习_第1张图片

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


Mat学习

Learning OpenCV 计算机视觉基础知识以及OpenCV源码学习_第2张图片

你可能感兴趣的:(C++,OpenCV)