本文章以同步投稿到知乎和Bilibili暂时没有视频教程(如果看的人很多的话可能会录一个)本教程永久免费永久免费不要VIP弘扬互联网知识开源精神也是因为怀着我之前在互联网学到的一大堆东西而对先行者开源知识的感恩而为后来者添加一把属于我的柴薪和力量吧本系列为超级适合新手入门的opencv教程文章目录本系列为超级适合新手入门的opencv教程一切开始之前什么是图片这张图片里面有什么长和宽分辨率颜色视频视频的组成视频的检测一切开始之前OpenCV是什么这是个很重要的问题。对于OpenCV它是个和视觉相关的包什么是视觉机器怎么来的视觉别急这一篇文章不会写出各样的代码而是为各位解释什么是视觉图片是如何转换成我们能操作的数据我们又该以什么样子的思想对待那些复杂的代码。这一篇的话会比较啰嗦(甚至是非常啰嗦)这也是为了比较彻底的为大家把一些很基础不知道就无法学习的基础知识总结起来放在一起不然的话把函数讲的再细致我们也很难把那些零散的理论知识放在一起嘛更别提更细致的进行应用了。在此之间请检查您拥有一定的python知识所以请回答以下的问题。Python的数组和元组有什么区别图片文件的后缀名有什么(知道一两个就行)假设有一个数组[12345]请问3这个元素的下标是多少如果要取出135三个元素你该怎么办Python的函数该如何定义在Python内有一个叫做Student的类Student里面有一个叫做Name的函数。你该如何创建一个对象(实例)创建对象之后你该如何使用Name函数假设在文件夹resource里面有一个叫做img的文件夹和一个叫做main.py的文件在img文件夹里面有一张叫做tore.png的图片那么main.py内tore.png的相对路径是什么如果你能够回答出这些问题不需要检查回答是否正确只要有一个准确的概念那么你就拥有了该教程的基础知识了什么是图片这张图片里面有什么长和宽对于这张图片而言我们能看到什么假设这张图片是印在一张纸上我们拿出尺子可以量出它的长以及它的宽。长和宽就是图片的最重要的因素之一。那么长宽的数值是什么呢大家玩过明日方舟、大侠立志传、植物大战僵尸等等的游戏吗大家发现这类的游戏在玩的时候是有一个类似棋盘的地图我们把这张棋盘掏空在把棋盘上的每一个格子内放上颜色这就是一张图片。这个棋盘的长多少个格子宽多少个格子这就是长宽。分辨率大家看视频的时候现在应该用的都是4K1080p这样子吧。这个就是分辨率。分辨率就是我们能从这个图片或者视频上分辨的多清楚或者说多详细。分辨率就是这个图片的长和宽符合哪一个级别达到了就算是这个分辨率。比如1080p就是1980x1020个像素。我记得影视飓风发过关于分辨率的视频大家可以去看看。感慨一句我在小时候看视频的时候看个480p都算是高清了~颜色除了长和宽我们还看的出来它还有颜色。在计算机上任何一张图片的颜色可以分为三个部分蓝、绿、红请注意计算机上的‘三原色’和绘画中的三原色‘红黄蓝’是不同的。至于为什么不同我们要知道显示屏的显示原理。大家应该都知道计算机上一些的代码无论是更贴近底层的C还是比较贴近现实语言的Python都无法直接在计算机上运行。我们需要把代码转换成二进制才能让计算机知道我们干什么。伟人说过实事求是我们不能让计算机运行不可能运行的程序。假设一台计算机上没有声卡和音响计算机就不可能发出声音。同样的我们之所以用这个方法来表示颜色就是因为在我们的显示屏上每一个像素实际上都是由蓝绿红三个元素组成的。如果有看过一些科普视频的话我们可以知道在计算机之中所有的颜色我们使用一个有三个元素的元组表示的元组的顺序为B,G,R蓝、绿、红这也是每个像素中的颜色顺序(注有些显示器的显示顺序可能不同但我们依旧在程序中使用BGR的顺序)。假设我们把蓝色设定为255再把绿色、红色设定为0。那么显示屏就会显示纯粹的蓝色。这个时候显示屏的蓝色发出蓝光而红绿两色不发光(或者说是发出极其极其微弱的光不过因为有些显示屏的时间太长导致的线路老化或者连接线之类的老化所以有可能发出极其极其微弱的光不过基本可以忽略不计这是硬件问题不过只要不明显变色显示器依旧是正常的所以检测显示屏是否正常的话你可以在电脑上放一张纯色照片例如纯白纯红这样如果明显偏色则需要维修或检查是否是设置问题)所以显示了蓝色。不过我们要知道在199x年那个时代中国不少人还在使用黑白电视那我们是如何区分颜色的深浅的呢我们看了上面我写的东西之后颜色在那个年代又该如何看很简单那个年代我们不使用颜色我们使用的叫做灰度(明度),那种图片我们叫做灰度图。我们把从纯黑到纯白的颜料放在颜料盘的两端我们再把那一大堆的纯黑纯白颜料各分出256份。纯白的下一份我们拿出一份的黑色和255份的白色混在一起在下一份我们拿出两份黑色和254份白色最终是256份的黑色那就是我们所分出来的灰度。此时可能有人怀疑说每个数字应该是0-255为什么要分出256份实际上0也是数字所以是1-255共255个数字以及0这一个数字共计256个数字。现在我们把这个调色盘拿到计算机上我们把0设定为黑色再把255设定为白色一头一尾我们就能把每个图片的像素分开了如果还是不太懂的话大家可以去网络上搜索一下素描素描用的铅笔用力划的话比较深否则比较浅没画就是纯白全力画当成纯黑用其它力道分开道理有些类似。下图是转换出来的灰度图这个图片没有三个颜色的元组只有一个灰度选项。抱歉托尔还有龙女仆第三季什么时候才能出抱歉托尔视频视频也是很重要的一点。如果你只是想学一些简单的opencv基础知识的话目前已经结束得勒~接下来是一些稍微进阶一点点的知识不过也是opencv能用的一些东西。视频的组成大家小时候有没有看过翻页书一本大概1块钱或者5毛钱大概1cm厚手指盖大小的那种。当我们快速的翻页的时候画面像是动起来的一样。现在我们给这本书的每一页起一个名字帧帧这个名字实际上不只是大家知道的意思。比如计算机网络之中就是数据链路层传输单位的名字在这里还是把帧这个字给定义为一个视频中的一个部分。给大家讲一下帧这个字是怎么来的。帧实际上不是外来的字。“帧”最早出现在唐代段成式的《寺塔记上》里“曼殊堂工塑极精妙外壁有泥金帧”帧在古代是画的画幅不完全说这个画多大而是指这个画的完整带有多大的意思。所以说中国上一代的程序员也不是现在网上说的秃头或者男娘也有很多很多的文人雅士。为程序员正名视频的检测我们在检测一个视频实际上就是检测帧我们把一个视频的帧切出来当作一个图片进行检查对于帧上面的关于图片的知识也是完全适用的。在这里也把openCV中的关于视频检测的大致思想告诉大家这也适用于任何需要导入视频修改视频的工作1.导入这个视频或者开启摄像头2.捕获每一帧3.像是图片一样的检测。好到这里我们关于OpenCV的最最最最基础的理论知识大家也就知道了但大家记住OpenCV的每一个函数的知识都不同我尽我的最大努力来给大家解释如果大家不急的话可以去看看线性代数课程Numpy课程这个OpenCV有很大关系的。最后康纳镇楼