粉丝225获赞2778

大家好,我是退役程学林业老师,这一系列讲座我将通过录制课程的方式将我自学 oppo cv 的经验和过程记录下来。 由于是初次接触,所以当中可能会有疏络或上不能解决的问题,还请大家见谅。 相关视频的补充信息我将发布到我的公众号退役程序员的查室,欢迎大家请来关注。 首先我们还是用 xco 的来创建一个 micros 的命令终端,里面的项目用 c 佳佳来作为编程员, 如果我们直接用这个新的项目在其中输入预处理命令来引用 open cv 的模块,他是不会成功的, 因此我们在编证之前还要做一些其他的操作。 首先我们挽回项目名称,在 build faces 里头 打开 link batteries libraries 这个像点击加号,在其中选择 add other。 这里面我们 我们要选择他的库的具体位置,我们用 ctrl shift 加 g 快捷键来打开这个库所在的位置,我这里面是 usr 下的 logo 下的塞了 里面的 open cv。 打开 oppocv, 我们看到我的版本是四点五点零点五, 打开这个文件夹里面的 live 文件夹,选择其中的 oppo cv 相关的酷文件,他们都是以四点五点零作为结尾的, 我们将他全部选中这些四点零点五结尾的 酷文件, 选择完所有这些四点五点零结尾的酷,完电之后点击 ok, 这样这些库就连接到了项目当中。这时候我们再试一下,看看可否使用 open cv 这样的库。可以看到 还是有一些问题,这就需要我们在 build settings 分页当中来查找 的,设置 pass 关键字,然后在这个关键字向下双击文本框,点击加号,这样我们需要添加另一个路径在其中, 这个路径和我们刚才添加酷文件的路径是一致的,只不过刚才选择的是 live, 现在我们要选择的是 include 这个文件夹, 在其中我们选择 open cv 四这个文件夹,也就是 include 向下直接的对应的这个子文件夹, 然后将这个文件夹拖拽到一个命令终端当中,就可以直接得到他的具体路径,然后按 ctrl c 将它 copy 到这个文本框当中,然后选择 recorcy, 也就是允许他向下搜索。接着我们再回到元旦码当中来添加一下, 看看这个预处理命令 include 能不能添加这些 opencv 的酷。 因为这里我只想简单的实现打开图像的功能,所以包含的是 open cv 二里面的,还故意这个头文件 他代表的是高层 gy 图形用户界面的模块。 因为 oppocv 这些类和函数他都是在命名空间 cv 里面定义的, 所以我们在闷方法外面写上 ucine name space cv 来声明这个命名空间之后在程序里面 open cv 的泪和函数之前就不用再加上 cv 两个冒号这样的前缀了。 下面我要做的程序是打开一个我硬盘上的 具体图片,这样我们用到了 mat 这个类,这个类也是属于 cv 这个命名空间的。然后我们看一下这个图像是什么样子, 我们可以直接将这个图像的文件拖拽到命令行终端,就可以得到他现在的具体路径。 我们要将这个录进拷贝到 i'm read 这个方法当中, 给出这个图像的路径明,然后他的返回之是一个 matmax 这个对象,然后用判断来判断,如果这个对象 是空,他将是没有找到这个图像,如果不是空的时候, 他将来做 i'm so, 也就是打开这个图像的操作。他的第一个参数是这个打开的窗口的名字, 第二个参数也就是这个得到的 mat 对象,也就是蚂蚁妹子。如果他是空的话,我们将返回一这个数字。 如果他打开了这个图像之后,我们还要做一个使用 with key, 然后一个零的参数, 这样一个函数,他是来帮助我们让程序打开图片之后等待,直到我们按下一个按键。现在我们运行来看一下效果, 可以看到运行之后左边弹出了很多警告,他并不是错误消息,而是警告我们一些文档方面的提示。 可以看到现在我们已经打开了这个图像,他的窗口名称是蛮银妹子, 当我们随便点击一个按键时,他就跳出了这个程序。 我们可以看到在输出框里面还有一些错误提示,但是却成功打印出了最后一行代码 hello world, 这也就说明这些错误并没有影响到程序的使用, 所以我们暂时不管他先来解决如何去掉这些左边出现的警告。 首先我们还是回到菜单程序菜单,点击项目名称,然后点击 build settings, 在分页当中我们找寻刀口们这个关键字,可以看到有一个刀, 我们 twitter comments 这一项,我们在这一项中打开之后点击 debug 选择 no 这个选项。这样在运行之后, 我们看到现在警告是二十一,当运行之后, 他们这些警告就消失了。另外这个程序还存在一个问题是当我们看一些参考书的时候, 这样的程序在开头起码会包含两三个 open cv 的头文件,而这里我只用到 到了一个,还可以这个透明镜。这样如果程序在其他的开发环境中运行的话,可能会 抱像函数找不到或者像泪还没有定义这样的错误。 如果遇到这种错误的时候,我们可以先看这些用到的所属的模块是哪一个,然后将他的头文键包含进来。在 x 扣的里面,我们可以选中这个函数,然后右键 在弹出。测试当中选择 jump to definition, 这样就会打开 他定义这个函数的具体文件,我们可以看到他的名称 来决定我们应该包含哪些头文件。另外我们还可以像在 mat 这样的 类上面也点击右键来查看这个 mad 类的定义是如何定义的,从而了解到这个类的结构。 如果需要添加其他的包含头文件,我们可以在前面添加进去。 另外如果我们希望更清楚的显示哪些类和函数是属于 open cv 的, 可以去掉前面声明的命名空间,然后在每一个 open cv 的函数和类之前加上 cv 两个冒号这样的前缀。 这节课我们就讲到这里,对这节课的补充我将发布到退役程序员的查室,欢迎大家关注。


我们这节课来讲一讲这个 sdl 以及这个 open cv 啊,那么 sdl 它是一个就是说比较底层一点的啊,比较底层一点的一个音视频的一个啊,框架一个一个它是一套开放元旦码的跨平台的多媒体的开发库, 那么他是用 c 元来写的,那么目前使用的就是说一些,比如说淋漓上面的一些游戏是吧?温度是上面可能也会使用到 模拟器啊啊等等等播放器等等。那么我们经常在呃我们的项目当中使用 sdl, 可能会在一些比如说我要播放播放音频是吧? 播放音频比如说我要播放一个 pcm 是吧?那么我们除了使用除了欧喷 pio 之外,我们还可以使用,还可以使用 sdio 是吧?咱们可以他可还可以渲染视频是吧? 还有就是我们在他是一个嗯,比较底层一点的,这种游戏可以开发游戏啊,但是你还是要自己写遥控键啊, 所以我们可能大家用的比较多一点的,可能就是,呃播放音频是吧?还有渲染一点视频,然后游戏的话,可能这个游戏的话,我们见的比较多的可能是零零是游戏上面用的比较多,零零是游戏,零零是开源游戏是吧? 那么其他地方的话可能用看到这个比较少。还有一个就是 比较重要的开发框架,这个是我们啊,这个是我们隆重推荐的一个 oppopopensyv 是吧?那么 oppopopencov 的话,我们在这个常见的领域用的太多太多了, 那么他也支持他主要是用来研究计算机视觉的,那么 ofcv 的话,那么很多程序的话,嗯,我们看一下,那么 ofcv 他主要是做机器视觉,比如说人脸识别 是吧?你别说我们看到的上班的打卡机是吧? 然后是什么这个摄像头,摄像头,比如 说这个车牌识别是吧?然后还有一些医疗器械,比如说这种 ctct 扫描是吧? 这种东西 oppo pcv 啊,实际上用的太多太多了,那我们现在的话,呃,经常用用的最多的可能就是说这个物体追踪是吧? 固体追踪统计车, 还有一个就是我们今天,嗯,三 d, 三 d 是吧?三 d 首饰 手势识别,这是当前比较流行的啊, 手势识别啊,三三 d, 三 d 扫描是吧?那么他一般可能就是要跟欧喷,欧喷机要进行结好来使用,还有就是说我们目前,呃非常非常流行的这个自动驾驶, 还有就是我们深度学习是吧? 所以这个 open c v 的话,我们是一个隆重推荐的,就是一个啊,开源的,开源的库,那么大家鼓励大家就是多去学习啊,那么将来这一方面的技术会非常非常的火, 目前呢就说这个人工智能机器人是吧?深度学习人工智能机器人,那么都可以使用它, 那么 oppo cv 啊,可以用来做很多很多很好的一些项目,但是他现在的话可能还有一些东西可能还不是很成熟,但是未来我相信未来五到十年呢,那么这个 oppo cv 将是我们这个计算机领域当中这个计算机技术的一个一次重大的一次飞跃,是吧? 那么他你支持比如说 ios、 安卓等等,你要支持 ios、 安卓等平台是吧? 那么我们桌面的话呢,是更不用说的哈,所以我们我们总结一下啊,就说我们做这个音视频或者计算机图像吧,统称计算机图像的计算机图像,计算机图先学是吧? 计算机图像视觉是吧?我们这假设计算机图像,我们做计算机图像的话,我们要学习的一些知识,那可能就是比如说波奔 gl 是不是?然后是 iphone pig, 然后是呃, 多喷 cv 是吧? 那么 oppo 主要是做三 d 渲染的,那么 iphone peng 主要是做音视频解码,但是 iphone peng 的话,可能就是主要用于是用于音视频,那么 oppo cv 的话,那么主要是用于这个计算机视觉。 还有一个就说如果我们要做音做这种音频的话,比如 sdl 也可以, sdl 是吧?也可以使用一下 open al 是吧?但这个 open al 就比较简单了, 这就是我们常见的我们要学的啊,这样几个啊,比较重要的这个开发库,利用这几个开发库的话,那么你就可以做 形形色色很多很多很好用的东西,很好很好玩的一些软件是吧?比如无论是你在移动平台或者说桌面软件,所以这几个库的话是我们强烈推荐的。那么还有比如说开发开发界面的,那么 qt 也是一个强烈推荐的。 那么做流媒体的话,比如说 srs 是吧? rtmp, 他就是一个 rtmp 是吧?还有一个什么 vivo rtc 是吧? 还有一个什么 saf 协议 cap, 那么 cap 协议的话,比如说像拎缝那么这种 cap 协议, 所以这就是我们这后面的这小这几节啊, 我们所给大家介绍的那么整个计算机啊,音视频、图形,图形图像,还有这种流媒体传输等等等等,这方面的一些,呃, 社会涉及到的一些框架,是吧?一些最主要的一些知识点,那么我们介绍给大家,你们自己在自己在做项目当中啊,嗯,能够用到的,是吧?或者说你 没有去做这些项目,那么你自己平时自学的,你可以去开发开发一些自己觉得好玩的东西,是吧?你可以放到 aps 做去卖,然后你自己可以去学习里面一些有趣的东西,为将来是吧做一些打算。 那么我还是鼓励大家多看元代码,什么多看这些,嗯,开元项目的元代码, 那么我们整个那么这个一系列的课程,嗯,关于这个 iphone pic 这一系列过程,我们就讲到这里,那么这个过程中我们设计了一些其他的,嗯,第三方呢?那么大量的知识,那么这些知识的话需要大家一步步去消化, 那么这些知识可能需要大家学三年、五年甚至十年,你都可能在这某一个领域当中,这个小领域当中去研究,是吧?你比如说你研究 aopacv 是吧?研究计算机视觉的, 你研究这个深度学习的是吧?你研究这个 iphone、 ipad 做音视频,嗯,这这一块的,你研究 oppo 机,要做三维的,你做游戏的是吧?那么等等等等, 那么这么多的内容你不可能全部把它掌握,我们强烈建议大家就是说,那么在这一系列的这些领域当中,你精通 其中的一个小部分,比如说你精通 open gl 是吧?那么其他的,比如像 ipadangophonecv 这些东西,你知道你可以拿过来用,但是你没有像欧喷阶有那么精通, 但是这些东西你知道是吧?你要以后要去做产品,做项目的时候,你就能够知道我到底选用什么样的技术是最好的, 是吧?我们没必要说全部我都整的很精通,你全部整的很精通,你也没有那么多时间了是吧?你最多整的整通一两下,你就非常了不起了。 所以这是我给大家学习计算机编程的,或者学习呃,我们去做产品,或者说我们去学习任何一门知识是吧?以及他相关的知识, 这些东西的一些建议,一点点技巧,我们就是要抓住其中的一个,把它学精,然后其他东西我们尽量能够做到触类庞东是吧?我们了解他,认识他, 不要想说我爸爸他全部都能搞定,这是不可能的,因为一个人的经历是非常有限的。那么好,最后的话,我们希望大家在学习 ipad paga, 那么这一系列课程中能够 庞真博影,是吧?能够,就像我说的能够把 ipad pat 这一部分课程能够至少我们能够了解,能够 学习到那么他的精华啊,那谢谢大家。


关于开运算,我个人的理解是,嗯,他是能够较好的消除按背景中的量元素,而与腐蚀和膨胀相比的话,他的操作不会使操作对象的面积变大。 然后我们这个是关于呃酿预算的一个一个程序, 我们来看一下他处理后的一个原图与效果图的一个对比,这个是原图在这个按背景中有一个 z, 然后这就是一个效果图,经过一次开运算以后的处理以后的效果图可以看见, 在按背景中较小的区域,较为狭窄的一些呃高亮区域 都被啊开运扇进行了一个消除,变成的一个黑色的区域,而那些较大的呃量区域则是没有被改变的, 可以看见,从而通过开运算可以很清楚的主观的感觉到他的一些菱角被磨平了,使整个呃对象都变得比较的平滑。 那么如果我们进行多次的一个运算会有一个什么样的一个效果? 通过货循环 对刚刚的那个原图进行十二次的一个开运扇, 可以发现与刚刚进行一次的那个 那个开运算以后,他是更加的平滑了,但是整体的大小没有太大的一个改变。 而他的这个被开运算以后,他的这个区域主要的就是白高量区域,比较大的区域是没有很大的一个改变的,但是关于这些呃区域,高量区域比较狭窄的都被进行开运算以后被抹除了,是整个 对象看上去比较的平滑,而他的整个一个大小是没有一个变化的,基本上是没有一个变化的。 然后我们来看一下 关于开运算他的一个定义,开运算,他的定义是什么?开运算其实就是一个先进行腐蚀操作,再进行一个膨胀操作的一个过程, 那么开运算有什么作用呢?开运算可以用来消除小物体,在纤细点处分离物体,并且在平滑 脚大的物体的边界的同时,不明显的改变其面积。意思就是说在一个脚暗的背景中,通过开运算可以去抹除一些脚细小的一些高亮区域, 比如说一张照片中有一些白斑点,可以通过这个操作进行一个抹除,同时他能使一些呃比较比较有棱角的一些图片变得比较平滑, 那么这个是他的一个演示的一个程序。 首先是头文件的声明,然后命名空间,然后就是一个组函数,在组函数中首先定义 啊原始图片的变量,目标图片的变量,然后和呃开运算的和的一个变量,然后一个中间,因为要进行多次图片的一个演示效果对比,所以需要定一个中间变量, 然后就对窗口的性子进行一个呃显呃,一个设置是窗口,使图片的显示窗口可以进行一个大小的拉伸,然后这个是读取图片,获取原图片,然后 由于进行开运算,所以需要获取一个核,然后真正的进行开运算,如果只进行一次的话,那么只需要这两个就可以了。 先获取呃和,然后进行一个开运算。和。这个东西是固定的,基本上是不会改变的,而开运算就是这个函数,然后第一个参数是原图,第二个参数是目的图,第三个参数代表着开运算, 然后这个就是填和的这个对应的函数,呃,变量名即可。这个就是关于一个用货循环去进行多次开运算的一个函数, 下面就是一个显示。


