粉丝2.7万获赞3.3万

如何给咱们自己的喷可露安装技能啊,也就是 skill 啊,就会列出很多很多的这个技能啊,也就是它的这个 skill 的, 然后这边每一个都是啊,每一个都是,然后咱们随便点击几个进去啊,这用它的名字还有它的介绍啊, 然后好多人他说想安装一个天气的,或者想安装一个 excel 的、 ppt 的、 办公的等等的查找啊, 查找的话大家可以看到啊,这边有一个搜索框,大家可以根据自己的需要去查找啊,比方说弄一个 api 的 输入以后,它会去自动搜索啊,技能啊,大家可以看一下啊,如果你在里面找到了你想要的技能啊,那你就点击进去啊,然后点击进去,它里面有名字还有介绍, 可以再详细看一下。如果你想安装了,想安装了以后,然后你往下翻,翻到底部,你看见这边有个文件啊,这边有一个文件,然后你点击 这个是什么文件呢?这个就是这个 skill, 也就技能文件的说明文档啊,这里面有他的名字叫这个,然后还有他的描述,有这些啊,这些,然后这个名字你要记住了,因为你一会要安装的时候需要用的这个名字啊,有需要用的这个名字,那咱们安装怎么安装呢? 然后打开你的终端,然后粘贴后边这个,后边有个就监控号,这个这个 sku, 这个你把它给删掉, 然后这个呢就是刚才你那个,就是说你那个技能的名字,也就这个,为什么说让大家记住这个名字,就这个名字,然后你复制一下, 然后你再粘贴,然后你按一下回车,这个时候他就可以啊,就是可以在这个给你安装了,这个时候就是安装了。好了,今天视频就给大家分享到这里啊,如果大家有疑问的话可以下方留言,喜欢我的视频也可以点点关注啊,最后谢谢大家观看。

手把手带你安装 openclaw 龙虾必备的 skills。 之前我出过一期 openclaw 保姆级安装教程,但装完之后你会发现它其实还只是一只裸龙虾。你让它查看文件,它说没权限,你让它算下天线,它说没联网,属于一同操作猛如虎,另近一看原地图,所以这个视频带你正确配置龙虾,补齐必备技能, 让它真正从能聊天进化成能干活。但在开始之前,我们先熟悉几个会频繁用到的命令,如果你是 windows 系统,就在 power 里输入这些命令,如 mini 是 micro, 二,系统就在终端 terminal 里输入。要开始用 openclaw, 第一步是先把网关启动起来,对应的命令是 openclaw gateway start。 启动后,我们可以打开 openclaw 控制台,也就是它的可式化操作键。面对的命令是 openclaw dashboard。 如果你暂时不用 openclaw 了,也可以把网关停掉。对应的命令是 openclaw gateway stop。 技巧一,本地文件读写从二零二六点三点二版本开始啊。 opencl 默认对本地文件访问权限做了限制,所以如果你想让它读取甚至进一步操作你电脑里的文件,要先把对应权限打开。操作也很简单,打开 opencl 或终端,输入 opencl config set tools, 点 profile for 命令回车执行。 把 opencl 的 工具权限切换成完整版,运行后还需要重启网关,让配置生效。对应的命令是 opencl gateway restart。 搞定以后,你就可以让 opcode 做各种文件提取和修改的操作了,比如批量重命名、文件整理、桌面分析、磁盘空间占用等等。 技巧二,联网搜索 opcode 默认情况下是无法获取网上信息的,所以你问天气、问资讯、问股价,他通通不知道,但我们可以安装一个负责联网搜索的 skill。 skill 可以 理解成是 opcode 的 技能包,本质上是一套针对某类任务的说明和流程, 用来教他在特定场景下该怎么做。比如这就是一个简单的 skill 的 例子, openclaw 有 个官方技能市场 clawhot, 你 能在上面看到很多别人做好的 skill, 可以 直接拿来安装使用。要事先联网搜索,可以搜一个叫 tablie search 的 skill, 这个 scheme 要求从 tiffany 点 com 获取 api 密钥,我们可以稍后设置。安装方法也很简单,我们可以直接复制 call hop 上 tiffany search 的 页面链接,粘贴到和 opcode 的 聊天里,无论是控制台还是飞书这类通讯渠道聊天窗口都行,然后让 opcode 自己帮你安装。 tiffany search 还会用到 api 密钥,所以我们来到 tiffany search 官网 注册登录后啊,就可以直接得到一个密钥,他每个月呢都有免费额度,而且不需要绑卡。拿到之后,我们可以把 api 密钥一起发给 opencall, 让他安装后自行完成配置。 装好之后,我们可以简单测试一下,比如在飞书里问他茅台目前的股票价格是多少,这时候啊, opencall 就 能顺利返回来自互联网的实时信息了。 技巧三,定时任务欧姆克劳支持通过 com 创建定时任务,不需要额外安装 sku。 比如你可以直接对欧姆克劳说,每隔五分钟汇报某只股票当前的价格,他就会创建一个定时任务, 然后按设定的间隔自动运行,帮我们实现对股价的监控。所以啊,不管是每天早上七点发资讯,每周一九点写周报,还是二十分钟后提醒浇花这类定时任务,你都可以直接交给他。 小四,浏览器操作 opcode 本身自带 browser 工具,不需要额外安装 skill, 就 可以读取网页内容。比如可以对他说,帮我看看知乎上现在有什么热点网址是这个,它会自动用浏览器打开网页,读取页面内容,把上面的信息整理出来。而且不只是读网页, 像点击输入之类的基础操作啊,它也能完成。比如让它去 github 上搜索 linux, 然后把排在前三的搜索结果给你, opcode 也能直接搞定。不过它的缺点啊也很明显,第一是比较稍 token, 因为网页内容因为状态,还有每一次工具调用的结果啊,都会不断进入模型的上下文。 第二是执行速度比较慢,因为 opcode 的 工作方式不像程序脚本或 rpa 那 样,流程确定后一次跑完。而 每做一步,都要先看当前页面,理解页面内容,探讨下一步该点哪里,再执行操作,然后再读取结果,继续推理下一步。所以它更像是一个会操作网页的 ai 助手,而不是一个高效率的自动化程序。另外,如果遇到强制登录、扫码、验证码校验,或者比较严格的反爬机制啊,我不靠也容易翻车。 技巧五技能查找 opcode 的 skills 很多,但真正麻烦的是不知道该装哪个。这里推荐两个实用 skill, 一个负责找 skill, 一个负责审 skill。 第一个是 find skills, 它的作用就是根据你的需求去查找合适的 skills。 安装方法和前面一样,直接把链接发给 opcode, 让他自己安装就行。 装好之后,我们可以对 okl 说帮我查找邮件自动化相关的 skills, 他 就会推荐合适的 skill, 这样你就不用自己去技能市场里一个个翻了。但接下来还有一个问题是,他推荐给你的 skill 真的 安全吗?那么我们可以再安装一个 skill better, 它的作用啊,就是在安装前先帮你做一层安全审查, 重点看看有没有权限问题、可疑行为,平常窃取回销代码或者数据外传之类的风险。我们可以再提醒一下 oppo, 安装每个 skill 前用 skillbetter 检查一下,这样后面啊,他在安装新 skill 的 时候就会先审一遍,再决定要不要装 技巧六,既能创建与改进除乱中别人已经写好的 skill, 我 们也可以直接通过自然语言让 opcode 创建新的 skill。 比如可以直接告诉他帮我创建一个 skill, 把新收到的邮件内容提炼成三句话总结。这样一来, opcode 就 能根据你的描述自动创建一个 skill, 让这套流程可以长期服用, 以后再遇到类似任务啊,他就不用每次从零开始了。如果你还想让他越学越聪明,可以再装一个 skill, 叫 self improving agent。 这个 skill 的 作用就是帮 opcode 把错误纠正和新学到的方法都记下来,慢慢沉淀成经验。 具体来说就是有失败的操作时,他会自动记录到 error state, md, 你 纠正他了,或者他学到了更好的方法,会记录到 learning state, md, 你 提了他一个还不会的功能, 会记录到 feature request, 点 md 一 些真正有价值的内容啊,后面还会进一步沉淀到 memory, 点 md 这种长期记忆文件里。那么安装之后, okl 不 止完成当前任务,还会把每次失误和改进建议啊,沉淀下来,自动应用过往经验,变成一个会复盘的助手。那希望以上这些技能补齐之后,你的龙虾能真正下场干活了。如果这个视频对你有帮助,也欢迎点赞和关注,我们下个视频见。


刚安装完 opencolor 的 时候,你是不是觉得他什么都做不了,甚至还有点笨啊?不用怀疑啊,是因为你还没有去 karthop 安装 skill 技能, karthop 上你有一万个、七千个 skill, 我 从下载量前三十名里面结合自己的高频使用场景,再推荐五个。安装完这五个之后,你的龙虾战力至少还能再翻三倍!第一个, remotion, 如果你想让 opencolor 帮你做视频,那么就一定要安装这个 skill, 它特别适合做知识讲解、课间演示、技能盘点、 软件教程这一类的内容。比如说字幕跟着口播,卡点出现重点内容自动放大页面切换炫酷数字和图标能够动起来,那么整体质感会比普通剪辑高级很多啊。 你现在看到的这条视频,本身就是用 remotion 这条流程做出来的。第二个,宝玉 skills, 这里我觉得一定要单独讲,因为它不是一个 skill, 而是一个一整套 skill 的 集合。这里面打包了很多内容生产和图案制作的相关能力,相当于直接给 open code 补齐了一整套工具箱。 像宝玉 slade take 这个能做 ppt, 还有能做信息图,你妹子能做封面图,还有文章翻译,做漫画,做小红书图文等等。所以它最直的地方不是某项单项特别强,而是你做内容的时候,很多环节你就不用到处找 skills 了。 装一个宝玉 skills, 等于一次性给 open call 的 装了很多只手。第三个,公众号三件套,这里我更推荐一个组合来用啊, wechat, teacher waiter, 然后 for meter, publisher waiter, 负责收集资料,组织内容,把文章先写出来。 for meter 负责把 markdown 的 格式转换成适合公众号排版样式。 publisher 则是把文章直接推进公众号草稿箱里面,也就是说,从写稿 排版这道进入后台,这条电路基本就打通了。如果说你想让 opencode 帮你做公众号,那么这套就非常实用。第四个 hamlet。 这个 skill 最实用的地方就是把 ai 位降下去,它会专门检查那些像 ai 写出来的官话、套话、闲话, 还有那种一看就是很模板式的表表达,你自己读的时候可能觉得还行啊,但是发出去别人一下就能看出来很不自然。所以说,如果你需要 opencloud 的 来写文案,写公众号,写视频口播,那么这个 skills 非常值得装。第五个 skills, operator。 这个很多人装的 skills 很 积极,但是装完就完全不管了,所以这个 skills 的 价值很直接,就是帮你检查 opencloud 的 和本地已经安装的 skill 有 没有去更新啊。最后总结一下, 这五个 skills 结合起来,补的就是 open core 的 最关键的几块能力,视频能做、内容能产、公众号能发、文案能优化,技能,还能自动维护。你装的不是几个小插件,而是装的是一套把 open core 的 从会聊天真正拉到了会干活的生产力组合。

哈喽,大家好,我是兔子,如果你需要做图像处理,那么你一定离不开一个库,就是 opencv。 今天我就来详细的教一下大家怎么去装基于 passion 的 opencv 的环境,今天会讲这些东西。 首先 open cv 是什么呢? open cv 它不是某一种编程语言,它只是一系列的酷, 他是一系列别人写好的库,然后封装成了各种编程语言可以调用的接口,你去调用这些接口就可以去使去实现相应的功能。他有四加加接口, python 接口,加外接口等等。 我今天教大家安装的是基于 python 的 open c v, 如果你想要看基于私家家的 open c v 的话,你可以在评论区给我留言,如果 人数较多的话,我考虑出一期 c 加加的 open cv 的教安装教程好, 好了,那我们我们来开始安装吧。装 open cv 之前首先要装什么呢?首先我们刚才讲了, opencv 是一系列的库,我们通过拍摄去调用它,所以我们首先要装拍摄的环境,包括什么呢?拍,就包括拍唱和呢?靠,那 拍 charm 是你写代码的地方,是你的编辑器。呃,那 com 大就是你的拍摄环境加一系列的包,建议你装拍 charm 加上的 com 大。 这个我有出过一个教程,你可以去点击我那个安装教程,里面讲解的非常详细,教你一步一步安装好这两。安装好这两个环境之后,我们就可以来装奔 cv 了。首先打开我们的 cmd 命令窗口,或者是嗯呐,康大的这个命令 窗口。三亩地的命令窗口是什么呢?键盘的温加尔会出现左边这个界面,然后三亩地回车,这个就是命令,这个就三亩地命令窗口,那么呢康大的命令窗口是什么呢?你在这里搜索输入,额,南康大,看到这里就出现一个这个,额,南康大这个, 这个就是可以看到他们这个上面是不同的,就是一个是 sam d 的,一个是,呃,康大的这两个都是输入这个命令的, 我们今天就用三亩地来来演示吧,如果你的三亩地不行,你可以尝试一下用这个呢。康大的这个咱们先看一下你你的拍摄环境,首先 要看你的拍子环境变量有没有设置好,你在 cmd 这里输入拍子回车,可以看到这里有拍子的版本,就说明 你你这个拍摄环境是设置好了的,这里这个警告是没有关系的,出现你的拍摄版本就可以试一下你这个拍摄是不是可以用的。一加二 回车,可以看到打印了一个一加二,等于三,打印了一个三,我们的拍摄环境是可以的。如果你这个拍摄环境不可以的话,你要先设置环境变亮在这里 我的电脑属性,然后找到这个高级系统设置,再点看,点到这个高级点这个环境变量, 点击这个系统变量,看到这系统变量里的 pass, 点击编辑,然后可以看,看到看到这几个没?如果你,那 你看一下有没有你的,嗯,那康大的环境在不在这个环境变量里,如果不在环境变量里就找到你,嗯,那康大安装的那个位置,嗯,那康大,嗯,那康大的下面的,下面的这些目录你都给他复制过来,就在这里 新建,然后再复制过来,新建,复制过来,把这几个目录全部都复制过来,然后点击确定,确定就确定就可以了。你可以电脑重启一下, 然后你再在这里打 python, 应该就有了。如果你电脑装了多个 python 的环境, 你想要换这个默认的拍摄环境,也是修改这个,修改刚才的这个环境变量就可以了,再在这里 ctrl z 退出刚才的编辑环境。 编程环境之后,我们要来开始安装了,安装命令是这个,给大家放大一下,这这两行都可以,这个是 pepping store, 这个 open c v 杠 pattern 就可以了,但是如果你这么装的话,他可能会比较慢, 你给他加上杠 r, 然后后面是这个清华镜像的这个网址,就是使用清华镜像版的话,他会快很多,所以我们直接用第二条命令复制一下,然后 复制到这边回撤,等待他安装完成,他没有报错,而且显示已经成功的安装。我们来看一下有没有安装完成。输入一下 pass, 进入 pass 的环境, 然后我们试试 input c v 二,看会不会报错。看没有报错,下面一个问题是很多人想 知道我安装完的 opencv 的库,它的路径是在哪里?找到你安装完的康纳的那个路径,然后你找到这个立步,立步之后有一个撒的 packages, 这个 砸到 packages, 然后在这里你看到这个 c v 二就是你装的 open c v, 我们在代码里,在拍唱里写代码,看看到底对不对。 关于拍 charm 的使用,我也有一个详细的教程去讲它的使用,不了解拍 charm 的使用方法呢,去看我那个视频就可以了,那我们今天就讲问 c v 安装,所以代码就代码 v, c v 的用法就不详细跟大家讲了。 这单代码的功能就是读取一个这个 cat 点 j j p g cat 点 j p g 是这个 cat 点 j p g 是 这个图片是我。首先你要你,你要把你的图片放到这个和你这个代码同一个目录下, 然后你运行这个代码,如果你你放在别的目录下,这里要要改成要改路径,如果你放到和他同一个目录下,这里不用改路径,直接写这个图片的名称就可以了。我们来运行一下右键 run, 运行一下,可以看到这个小猫图片就显示出来了, 说明我们的 open cv 已经完成了。然后再回到我们的代码,如果你之前有写过代码,你就会发现,你就会发现问题,问题是这里这个, 你把鼠标放这边,它显示是报错的,而且仅 o c v 点,你发现它不 不能自动补全了,他理论上来讲就是他自带的阿木瑞子是他自带的那个函数,他应该是可以自动补全的,但是他不行了。然后我们用 pront, 你看他是可以自动补全的, 它下面会显示出这些是可以自动补全的。现在就说明虽然可以用了,但还是有点小问题,这个问题会非常影响我们写代码的体验,所以我们要把这个问题解决。这个问题是高版本的 opencv, 有的四点五之类的, 或者再往前的是没有这个问题的,我们安装的比较新,他有这个问题,我尝试了很多种方法去解决,最后发现最有效,最简单的方法就是这个, 回到我们刚才讲的那个 c v 二的这个,我们说 open c v 是装在这里的,找到这个 c v 二,点 p y d, 把这个文件复制一下, ctrl c 复制,然后返回到上一层,到这个 set packages, 然后粘贴,这里面就有这个 c v r 点 p y d 了,把拍唱关关掉, 然后再重新打开。我们看到这里报错没有了,我们来看一下自动补全行不行吧? c v 看到它这个自动补全可以了,它这边就会提示出它这些自带的一些一些函数了。 到这我们 open c v 就已经安装完成,可以使用了。好啦, open c v 的安装到这里就结束啦,相信你也安装成功了吧,我还在考虑要不要出 open c v 的教 学,看大家有没有这个需求,如果需要的人比较多的话,我就考虑出一系列简单的 oppocv 使用,带领大家简单的入门。好了,今天的视频到这里就结束了,我们下次再见。


为什么你的龙虾一碰到稍微复杂的任务就开始卡壳?不是它不够聪明,而是你还没给它安上合适的 skills。 接上视频,我就用最简单的方法教你怎么给 opencore 安装 skills。 首先去 corehub 找技能,它是 opencore 官方的公开技能库,你可以直接按关键词搜索,也可以按分类去挑。如果你想找整理的更清楚的合集,还可以去 get hub so awesome。 openclaw skills 夏已经收落了五千多个社区技能,上线起来更方便。找到想要的 skill 之后,最稳妥的安装方式是两步,先在聊天框里搜索,再安装。比如 clawhub search, 然后双引号,里面是你想安装 skill 的 名称,然后接着 clawhub install 双引号,然后呢,里面是 skill, 安装好后他会告诉你是否成功,然后给一系列他下一会的技能。还有一点一定要记住, 不要看见 skill 就 无脑装,因为 clockhop 是 开放的第三方 skill, 本质上也是 damon 优先安装,下载量高说明完整。评价好的技能,安装前最好先看一眼它到底能做什么。我这里也帮你整理了十五个非常值得优先安装的 skills anthology, 帮龙虾接力结构化支持网络,做复杂任务时更有条理。 playwrite 网页内容遇到动态页面也更好,用 data analysis 做数据分析,图表、报表和表格处理非常强。 self improving agent, 把报错修正和经验沉淀下来,越用越聪明。 bbc news, 快 速获取 bbc 新闻内容搜索咨询整理 brave search 轻量级网页搜索,不打开浏览器也能查资料。 agent browser, 自动点开网页,填表单,跑网页流程,非常适合自动化。 proactive agent, 让龙虾不值得你命令,而是更主动地接近任务。 to do it 职业管理任务,适合做个人代办系统。 agent task tracker, 实时追踪任务状态,防止到了一半丢进度。 agent step sequence, 把复杂任务拆成多步执行,适合长流程工作。 get ready, 随时查天气和预报,适合日常查询任务。 agent order skill, 安装前先做安全检查,降低踩坑概率。 heimdall, 扫描 skill 里面有没有可疑恶意的模式,安全党必装 local approvals, 把高风险操作加上本地审批,避免龙虾乱执行。 把这些技能装好之后,你的 oppo 货就不再只是一个会聊天的龙虾,而是一个真正能搜索、分析、浏览、执行和自动推送任务的 ai 助手。本期视频就到这里了,关注我,教你们更多的 ai 技能,点赞、收藏、关注!

我是陶美,今天继续我们 open cv 学习,那今天啊,我们主要来讲一个案例,也就是人脸识别,那今天的人脸识别呢?我们主要是基于这个 face 的肯定神来实现的啊,它的原理呢也是非常简单,我们先看一下它的这个效果是怎样的 啊?我呢下载了三张这个图片,分别是三个不同的人物啊,经过我们这个人脸识别系统的时候,他前两个呢都能够正常的识别,那么最后一个呢?他发现啊, 哎,这个人我不认识,就啊 no, 不认识,为什么他不认识呢?因为我们这个数据啊,他没有这个人,所以呢当他检测到一个新的人脸的时候, 他就会给你显示, oh, no, 就是我不认识。如果这个数据库里面他有,比如说有这个刘德华这个图片,他识别到之后他就会,他就会告诉你刘德, ok, 那这个就是我们今天要实现的一个小的人脸识别的一个小的案例。那我们再继续看一下今天啊我们要 用到的哪些方法,因为我们是用这个 face recognition 这个酷来实现它里面呢,首先是有这样一个方法叫 face distance, 这个主要是用来计算两个人脸之间的这个距离,这个距离,因为我们在之前的上一节视频当中也讲过,我们会把人脸的关键点进行一个编码,也就是编编,编码成一百二十八为, 他会计算这两个,一百二十八为这个项链他们之间的一个距离,来判断是否为统一个人。 ok, 那么第二个方法叫做 face locations, 这个方法呢,它主要是用来查找一张图片当中有几张人脸,没事,你给了他一张图片, 里面有三张人脸,他,那么最后他会,他会给你返回什么呢?返回一个列表,这个列表里面有三个数组,每个数组呢都是这个人脸的一个位置,也就是 location 啊。第三个方法叫做 landmarks, landmarks 呢,主要是检索人脸的一个关键点,因为我们在前几页视频当中讲过人脸的关键点呢,他我们目前学到的有六十八个关键点和五个关键点, 一般来说呢,我们会用六十八个关键点,因为他更能够刻画出一个人的一个脸部的一个一个形状, ok。 然后第四一个方法叫做 face includings, 这个方法主要是进行编码的,就是说我把你这个上面找到的这个关键点呢,编码乘一个一百二十八位,我们就是通过这个方法来实现的。那最后一个方法是叫做 这个方法,其实呢他主要是用来比较的,这是我比较你给我的这两个人脸,他们是否是同一个人,如果是,我就给你返回一个 q, 如果不是,我就给你返回一个 force, ok, 然后这边这个叫 tolerance。 零点六,什么意思啊? 我在比较的时候呢,我会设定一个预值,就说如果你小于零点六,那我就说你们两个人这个相似度比比较比较可靠,如果我计算出来这个结果大于零点六,那我就说你们两个人完全是不是同一个人, 他这个就是一个计算的一个过程。那这里啊,我给大家提供了一个 api 的一个文档,叫 face recony 一声的 api 的文档啊,各位朋友可以去看一下,我在这里,这里呢也可以,待会当我们写完整个代码之后,我也会呢,带着大家去看一下它底层 api 的一个实现。 ok, 那接下来 那我们就是开始我们今天的这个项目,首先啊我们还需要打开我们这个拍券,也就是集成开发工具,然后呢打开,打,然后呢打开我们这个啊,项目工程 face reconnation, 对吧?那在这里呢,我们要重新命名一个,呃,拍成 package, 一个一个包,比如说我们今天是人脸识别,对吧? face recognition, 然后呢我们用的是 face recognition, 我们就用这个叫 f r g 吧,对吧? face f r g 来表示,呃,就这样, 然后回车,在这里呢我们要新建一个文件,也就拍摄文件用,主要用来实现我们这个功能的,也就人脸识别这个功能。在这里呢,我们就说 face 吧, f r f s 这样写,行,可以随便写 face r g 啊,回车,然后接下来因为我们要实现 这个人脸识别吗?那我里面是不是要有一些数据啊?这个数据就是用来对比的吗?那我在这里呢,我要放两张图片进去,在这里我先 review, 找到这个文件夹,然后呢双击打开它,在这里啊,我要放放进去两张图片, 这个呢是我刚才从网上下载了两张图片,一个呢是郭富城的这个图片一,一张呢是刘德华的这个图片 啊,一共是两张图片,因为我们毕竟是一个小的案例吗?主要是给大家看一下效果到底是怎么实现的。 ok, 我们现在呢在这个小的这个项目里面,项目里面放了两张图片了, 第一章,第二章,对吧?那接下来我们就来开始写代码实现这个功能,我们稍微捋一下,你怎么去实现这样一个人脸识别呢?那是不是跟过去一样? 我们是不是要加载库?我们这边写一下你要加载库这第一步吧,那第二步你要干嘛?那你是不是,呃,要加载我们的图片,因为我这边提供了两个素材,对吧?我们待会要先我们第一步呢,我们肯定要去。 呃,实现就说把他们的人脸给他找出来,同时给他这个人脸呢进行一个 encoling, 也就是给他进行一个编码,包括他的关键点我们都要找出来,然后呢进行一个编码,那这个图片也是一样的,首先我们要在这张图片当中找出这个人脸在哪里, 然后呢给他这个绘制或说找到他的关键点,也就是他脸部的六十八个关键点,我们全部给他找到。最后呢我们给他进一个编码。呃,流程是这样的,我们这边首先是加载图片吧,或者加载素材都可以。然后这第二步,那第三步我们要干嘛?因为我们这个 open cv 呢, 他默认的这个通道是 b g 二,我们这边必须要给他转换成 r g b, ok, b g 二,我们要进行一下转换,转换成什么呢?转 转啊? rgb, 对吧?这第三步我们要转换一下图片的一个通道格式或顺序。那第四步我们要干嘛?我们这边这样写也行, 就说因为我们这边加载图片之后嘛,这第三步是这样的。第四步,我们是不是要去对这个加载的图片进行一个人脸检测,就像我们刚才讲的,你要给我检测人脸,对不对?所以第四步呢?就是检测 人脸, ok, 第四步,那第五步我们要干嘛呢?人脸检测到了,那我是不是要进行一个编码了,对吧?就说我要给这些人脸给他进行一个编码,就一百二十八位的一个编码,那我这里可以这样写,比如说人脸特 编码,对吧?我可以这样写吧。那么第六步干嘛呢?就说我们编码之后,我是不是要把这两张数图片当做一个数据库啊?当做一个数据库,为什么呢?因为我待会通过我的这个摄像头打开之后呢,我会和我的这个数据来进行比较对比,就说 我检测检测到的这个人脸,他是不是我这个数据库里面存放的这两张人脸?如果不是我就给你说一个叫做啊? no, 我不认识你, 如果是的话,那我就给你说说,他对应的这个名字就是刘德华,这个名字就是郭富城,对吧?就这里呢?第六步,也就是说我要把它放在一起组合成一个数据库,把 所有人脸放在一起当做数据库使用,对吧?这个数据库的作用啊,就是说当我通过 摄像头来识别人脸的时候,我要和这个数据会里面所有的人去比较,一一比较。如果我发现有一个非常相似这两招人脸,那我就判断这是同一个人,我再给你说出一个名称,比如说刘德华,对吧?就这么简单。那第七步要干嘛呢?我们是不是要打开我们的摄像头了?所以我们这边可以这样写,打开摄像头,要打开摄像头了, 读取视频流,对吧?你说打开摄像头读取视频流, ok, 这第七步,那第八步我们干嘛呢?那我们是不是把我们摄像头读取到的每一针,也就每一张图片 转换成一个啊?这个 rgb 格式啊,所以我们这边还是要再做一个转换, b g 二,对吧?转 rgb, 对吧?这第八步,那么第九步我们要干嘛呢?那么是不是我们也要对这个摄像头啊,这个读取到的每一张图片进行一个人脸的 检测,对吧?我们摄像头开就一直打开着,那么他会读取到每一针,我就对每一针进行一个人脸的一个检测,所以我这边呢,肯定是还是跟上面一样进行一个人脸检测, 这第九步,那么第十步我们要干嘛呢?那是不是还是和这里一样,我们要进行一个人脸的一个特征编码,对吧?这我们这边还是一样的,人脸 特征编码是第十步。那第十一步呢?那我们这边进行人脸特征编码之后,那首先啊,你看一下我们这边数据库是不是已经准备好了,然后这里呢,我们又发现了一个新的人脸,也给他进行了编码,那是不是我要进行比较了?我要把这个新的特征编码和语言,这个原来的这个, 这个数据库数据里面的所有的这个特征,这个人脸特征进行一个比较,如果发现相似或相等,我就 判断是同一个人。所以这里呢,肯定是说与数据库中的所有人脸 进行什么进行匹匹配吧,对吧?我我要和他进行一个匹配吧,那第十二步是什么呢?第十二步就是说我在匹配的时候, 我是不是要通过一个循环,因为我这个人脸啊?因为我这边才两张图片,对吧?非常少,这是才两张。那如果我这个数据会有一百万张图片,那你这里是不是还是要通过一个循环去一个一个的去匹配?所以我们这边肯定会写一个循环的。那么之后呢?我们会进行一个匹配, 比如说我这边进行开始进行匹配了,对吧?进行匹配,然后呢?第十三步,干嘛?那我这边进行匹配的时候,你怎么去匹配呢?我是不是要计算你两张图片这个编码的距离啊?刚才 我们就一直在讲,就说我们把所有图片进行一个人脸特征编码之后,他们也就说有各自的一个特征了,那怎么去来判断他们是否相似为同一个人呢?那我这里肯定是要去计算他们之间的一个距离, 这个计算距离啊,我在上一节视频当当中讲过,讲过了那个通过欧式距离去进行一个比较,如果这一块不太了解啊,可以看一下上一期的一个视频计算距离,对吧?对,第十三步。那么计算距离之后, 接下来我们要干嘛?我们是不是要做一个判断?就是说我要判断你这个距离到底是近还是远?如果发现很近,也就是说你匹配了,那我就给你说出一个名字吗?如果我发现你们两个人之间的距离很远,那我就说你们不是同一个人,对吧?所以我这边肯定是要做一个判断的,对吧?肯定会做一个判断, 如果匹配,那么就输出或者获取这个名称吧,对吧?名字,因为我每张图片都对应了名字的,我待会会给他复一个名字,比如说郭富城、刘德华,对吧?我都会给他复一个名字的, ok, 那继续, 这是第十四,那第十五干嘛呢?第十五,我们是不是当我们如果匹配之后了获取到名字了,我们是不是要在这张图片上画出一个矩形框,对吧?把它一个矩形框画出来, 就把他这个人脸给他框住,是不是?那同时呢,我们要在这个他这个下方,这边我会画一个长方形, 显示这个人的名称,就显示在这个矩形框的下方,所以我这边肯定是显示吧,对吧?所以显示呢,肯定是说绘制人脸的矩形框,对吧?绘制 人年举行框,这第十五步,那第十六步干嘛呢?那你是不是也要写上他对应的一个名称,对吧?绘制或说啊,显示吧,对应 人脸的名字,对吧?这你肯定要显示吗?不然你只是把一个人脸框给他框出来了,你下面也没写名字,这肯定,这肯定是不行的。那第十八部是干嘛呢?那最后是不是我们要把整个图片给他显示出来,整个效果给他显示出来,对吧?显示整个效果, 对吧?就这么简单。然后最后呢,我们说要关闭啊,关闭所有所有的资源,关闭所有资源,我们要释放所有资源,对吧?这第十八步,一共就十八步。先我这边呢把一些很小的一些这种操作也给他进行了细化。像我们在写代码的时候啊,你就像那个建房 房子呀,就一块砖一块砖的往里面去垒就可以了,这样呢也比较清晰,我们就接下来呢,就写一下代码吧。首先我们是加入库,一步一步来,是不是你要导入库啊? input, 对吧? input 什么库?是不是 cv 库?还要导入什么库?是不是导入我们的 nan pie, 对吧?我们这个也会用到的, 还需要导入我们很重要的一个库,叫 face recognition, 这个库你必须给我导入进来,因为我们要调用它的方法,刚才 ppt 里面我们着重强调了这几个方法,我们待会儿都会用到。 ok, 我们接下来呢,我们首先是加载图片,比如说我这边留吧,对吧?就是刘德华对应的图片吧, i am ready 的 读取这个图片,这叫刘,对吧?然后呢,我还有读取谁的?这个是郭富城的,对吧?我这边读取郭富城的图片,这边郭, 对吧?点接 bg, ok, 然后呢,这个图片我读取之后,我是不是第三步进行一个 bg 二转二 gb 啊?因为欧本思维默认是 bg 二 bg 二的这种格式或顺序,所以我这边还需要给他做一个通道的一个转换,很简单, 直接是这样,前面的高和宽不变,把后面的通道就颠,呃,颠倒一下顺序就可以了啊,颠倒顺序直接用这种这种写法就可以了,前面两个不变啊,一个负一嘛,这个就是我们列表的一种用法,对吧?所以我们这边一个,然后接下来是国嘛,郭富城的郭, 然后是通道给他做一个颠倒,这样就可以了。 ok, 这样的我们就把 b g 二转换成了 rgb, 那接下来一步呢?是不是我们要检测人脸了,对吧?我们这个图片你你输给了他,他也不知道人脸 在哪里,所以我需要对他进行一个人脸的检测,看看人脸到底在什么方位。所以我这边呢,肯定是有个叫给他一个变量叫六流 face, 对吧?通过我们的 face recognition 调用里面这个方法,通过 face, 然后呢他会提示你的叫 locations, 这个方法呢,主要是用来检测人脸在哪里的,你看他里面,他这里就提示你输入哪些参数了,对吧?他默认用的是 hog 这个算法来进行一个人脸的检测,当然 他还有一个,呃,还有个还有一种选择,就是用 cnn, 也就是通过我们的神经网络卷机神经网络来进行一个人脸检测。他为什么默认用耗子呢? 因为号码它的速度比较快一点,虽然它的精度不高,但是它速度比较快,如果你把这里的默认改成了 cnn, 它的速度就比较慢,速度比较慢啊,如果你的机器啊,你的电脑的性能比较 包,我建议你算用成 c n n, 他的这个精度比较高,我们这边呢就全部选择默认的了啊,这样速度就比较快一点。然后我们这边首先把这个图片你要给他扔进去,对吧? 我们的图片是不是我这边这样写一下,因为我们转换成 rgb 了吗?所以我这边给他做一个标记, rgb, 对吧? 我们就把这个留的这张转换后的 rgb 图片给他扔进去,这样呢,他就能够自动去检测这个人脸了。看看你这个图片里面有几张人脸,他都他都会给你检测出来,最后给你返回他的位置。 ok, 接下来呢,我们就检测一下郭富城的人脸郭, 然后呢 face, 然后再用,再调用这个方法 locations 就可以了,然后是锅而击毙,这样呢,他就会把图片里面所有人脸,这个图片里面所有人脸都会检测出来,这个也会检测出来。人脸检测出来之后, 我们是不是要对他进行一个啊特征的编码了,也就是编码成一个一百二十八位的特征项链,所以我们这边呢,还是调用这个叫 reconnesse 方法,然后调一个叫 face including 这个方法 includings, 他就会给你去做一个编码的一个工作。首先呢,你要把他图片放进来,留 rgb, 对吧?同时呢,你还需要把刚才检测到的人脸的数据给他放进来。为什么?因为你这个留 face, 我们现在这个图片他只有一个人脸在里面,那如果我们这个图片里面有很多张人脸,那你这边 得到的这个留 face 是不是它是一个数组里面有多张人脸的一个坐标,所以你这边呢要把它给它传进来,因为我们现在看到的它这个是一张人脸,但是呢,如果这图片里有多张人脸,多张人脸怎么办呢?所以你这个肯定要传进来,对吧?它这个留 face 可能是一张 人脸,有可能是有多个人脸在里面,然后呢,这样他就可以进行一个人脸的编码,对每一个人脸他都会进行一个一百二十八位的一个特征的一个一个编码。 ok, 那接下来呢,我们看一下锅 那说,呃,锅的一个 recognition re 锅,哎, sorry, 应该是 face reconnession, 我们对他已经一个编码,然后把锅的这个图片先给他传进来 说 rgb 的图片,然后把锅刚才在图片上检测到的这个人脸给他传进来,对吧?没有问题吧?然后给他复 把它,首先啊,付给一个变量,为什么呢?因为我这个减编码之后啊,他会,他会得到什么呢?他会得到很多张人脸的编码,所以我这边一定要给他复制一个变量的,比如说留,对吧? including, 当然我可以加 including, 因为我们我,我们现在知道他这个图片上就一张人脸,所以我这里呢,我就这样去命名了,但这样命名其实不太好,因为你这个刘嘛,刘德华,你这个太,对吧,你就已经知道结果了嘛。但是我们今天主要是演示嘛,我们就先这样写, ok, 然后呢,这这样呢,我们就拿到了每张图片上每个人脸的一个编码,我们全部就拿到了, ok, 那接下来我们就把他们放在一起啊,当做一个数据库去使用,怎么放呢?啊?太简单了。首先是我们,比如说我这边这样写,叫做 incoling spa, 因为是所有的嘛,我都放在一起了,比如第一个是留的 incoling 放,放里面, 然后锅的 encoding 放里面,就是这样就可以放在一起了。然后呢,我要给他们一个命名,就 names 把,就给这两张图片进行命名,因为我们一旦进行人脸识别,我要给他显示个名 称的,所以我这边呢,比如说刘德华,对吧?郭,你要用字符串,郭富城,对吧?这样就可以了,两两张图片,然后呢两个人,两个人点吧,两个人我就给他两个名称,如果你这里有很多姓名的话,你这边可以再放很多姓名都可以, 这个这样呢,我们就组合成了一个,一个数据库,一个数据库,这个是编码,这个是名称。接下来呢,我们就打开摄像头,你看我们这个每一步是非常清晰的,我建议各位朋友写代码呢,也可以这样去写,你先用中文去描述,然后你再写代码,就像那个 啊,建房子一样,你先把骨架搭起来,然后再往里面填这个砖头。然后首先呢,我们打开我们的摄像头,是不是因为我们的 cv, 然后是 v 六 capture, 对吧? ok, 打开摄像头,然后呢,我们 是不是你要判断一下我们这个摄像头他是否正常的打开了,如果没有,那我就要报错,我就要给你一个错误, io arrow 这个错误,比如说 camera row arrow, 对吧?我就会告诉你摄像头错了,你的摄像头设备有问题。 ok, 这样就可以了。那接下来呢,我们是不是要通过一个外循环去不断的读取我们这个摄像头啊?直播间,所以我这里用一个外循环, 然后这边写法很固定啊,然后是 cap, 然后 read, 对吧?这样我就能够读取到每一针了吧,也就是每一张图片这个 frame, 也就是每一张图片 读取号。读取到之后,我是不是要和上面一样进行一个呃, rgb 到 b 教的一个转换,所以我这里呢,直接给他进行一个转换,怎么转啊?是不是跟刚才的一模一样?今天是 frem 吧, fram, 对吧?然后呢?哎,然后是,呃, frem, rgb 吧,还是跟上面写法一模一样吧,这样我们就知道这个 frem 是不是已经转换,转换之后的了, 我们这边还是一样高和宽不变,把它的通道顺序变一下就可以了,这样我们就把它通道给转换好了。那接下来我们是不是和上面一样进行一个人脸检测了吧?就第九步进行人脸的检测, 检测是不是用这个方法,这个 location 一样吧,对吧?所以我们这边还是用这个 location 来进行一个人脸的检测,是不是 fast recognition, 然后呢 location 看一下啊,是 face locations, 这样呢他就会检测你这个图片上的人脸到底有几张人脸在上面。 friend rgb, 然后给他啊,把这个 返回的结果呢复制给一个变量,比如我这边就叫做 faces locations, 据说可能他有好几张人脸的一个图片,这个好几张人脸的这个数据啊,我都给他赋予了这个变量,对吧? 那接下来我们要干嘛?那么我这个人也检测到了,我是不是要给他进行一个编码,跟上面这个步骤是一模一样的,我要对他进行编码,怎么编码?是不是用这个 face recognition 里面有个叫 face includings 啊? 他这个方法都给你写好了,待会我们会看一下他底层的实线是怎样实现的。这里呢,首先我们需要把这个 fram rgb, 你要给他这个原始图片给他,然后呢你还要把这个刚刚找到的这个啊, face faces, faces locations, 刚刚给我们找到的所有的人脸的数据,你要给他,我们给他往里面一放就可以了。最后呢,他会给 给我们返回一个数组,就是一个一个列表,这个列表里面是所有人脸特征的一个编码,所有人脸的一个人脸特征的一个编码,下面这里呢也给他一个命名叫 faces, 对吧? accordance, 这样就可以了,我们就拿到了他的所有的这个人脸特征的一个编码了,全部拿到了,那么接下来是是做什么呢?你是不是要 与我们的这个数据库啊进行一个对比了,就说我通过摄像头识别到的检索到的人脸,我要和我们这边的数据库里面进行对比, 看看到底是不是刘德华还是郭富城,还是说你是其他人,对吧?我这边呢就要进行一个对比,对比你肯定要用一个负负循环嘛,因为我们数据库里面有可能有很多人,我们现在才两个人, 那你如果有一百万一一百万张图片怎么办呢?所以我们这边要用一个负循环做一个对比,对吧?这个对比呢,我们可以这样写,比如说,嗯,我能, 我可以把这个 locations 和 including 可以把它们放在一起,我们可以这样写啊,首先是啊,我先写,写完之后我再跟你讲,为什么我这么写 top, 然后是什么是 right, 然后是 bottom, 然后是什么是 left, 然后呢,这边是一个 locations, 一个 face including, 我先这样写,你还不知道我为什么这么写,对吧?啊? in zip, 然后是我们的 face is locations, 然后是 face is includings, okay, 这样就可以了,我为什么这么写啊?首先我用这个 z 盘数,就是将我的这个刚刚检测到的人脸数据和这个 includings 每个人脸对应的这个 includings 放在一起。这个 zip 函数呢,就是一个粘合函数,把他们组合起 起来,组合在一起,然后我通过一个,通过一个负循环呢,不断的去读取他们里面的每一对数据,我通过一个负循环都是不是在读取啊?那么这个 location 我刚才讲过了,他返回的是什么?返回的是坐标,对不对?就是你的,你的,你,你的这个四个坐标,所以这边呢,给他返回了 top, right, bottom, left 四个点的坐标,我都给他,我都全部给他拿到了, ok, 全部给他拿到了,然后这个 face including 呢?其实就是我们拿到的这个里面每一张人脸的一个特征编码,一一个一百二十八位的一个特征编码, ok, 这个就是负循环的一个作用,就是循通过循环拿到他们相对应的坐标和编码,就这么简单。那接下来我们要干嘛?是不是你拿到了这个编码之后,我需要进行一个匹配啦,对吧?我需要进行匹配,匹配怎么匹配呢? 很简单,我这里,哎,我把这个这个备注放到里面去,接下来就是进行一个匹配,匹配啊,我们也是有一个方法的,叫做 face 啊, recognition, 对吧?然后呢? face 里面有个叫做,看一下啊,叫做 compare, compare faces, 就我们可以用通过这个方法来进行一个比较,或者说通过一个 啊,通过这个方法来进行匹配。它里面你看你要传进去两个编码,一个是已知数,已知的人脸的编码,你要给我传进来,说白了就我们这个数据库吧,刚刚准备的还有一个呢,就是你摄像头检测到的这个 人脸的一个编码,这两个编码你要给我传过来,然后这个是一个默认值,也就是零点零点六一个预值,你不用管他,这个你不用管他,我们找一下刚才这个数据库的编码,叫做 mcolins, 这个你给他拷贝过来,然后呢,我们 通过循环读取到的每一个人脸的编码,你要给我考过来,这啥意思啊?就是说我把我检测的这个第一个人脸和我已知数据库里面所有的人脸进行对比,我看看你们两个人之间是否相似,我会计算出一个,就就是进行匹配嘛, 我会判断你们之间是否相似,会得到一个距离,你这边肯定会给我返回一个距离的,这个就是进行一个距离的一个计算。 ok, 那么,呃,我拿到啊,这边应该是一个匹配, sorry, 不是距离,距离是在下面计算,我们这边应该是因为这边是一个距离,对吧?我们在第十三步,我们会进行距离计算, 这边呢,你会拿这个匹配,他会进行判断,比如说这两个人是否相似,如果相似我就给你一个 choo, 不相似我,我就给你一个 force, 所以这边是一个匹配,叫 matchs, m, a, d, c, h。 我们这样写啊,然后接下来我们才是计算距离, 计算距离也很简单,通过我们的 face, 那肯定是里面有个叫做啊,看一下在哪里叫做 face distance, 对吧?通过这个,通过这个方法,它是计算距离的,而这个是用来进行比较的,所以我们这里呢,可以进行一个距距离的计算,也很简单,直接是 in call things, 然后呢 face including, 这样就可以了,这样就可以了,我们现在呢就可以通过这个方法来计算他们的距离,最后我们就拿到了这个距离,比如说叫做 distance is, 我们现在就拿到了啊,这个人脸和数数据库里面所有人脸进行这个计算之后的这个距离,所以这边呢也是一个列表,他有很多距离的,对吧?因为我这个数据库我现在才两张人脸,如果我有很多张人脸,那么他这个 返回的结果呢?就是有很多很多的这个数据,也就是距离嘛在里面这是一个列表, ok, 那这个距离我们就计算好了,那接下来我们要干嘛?我们是不是要做一个判断,就说我们也就是第十四步,我们要做一个判断, 就说如果匹配我们就获取到他的名字,这个判断怎么判断呢?也很简单,直接是用我们的这个易腐语句,易腐语句我这里啊,我要先将用个内内幕来做一个,就说如果我们这摄像头读取到的这个人脸 不在数据户当中,我就给你返回一个叫 oh no, 我不认识这个人,结果这边呢先给他定一个啊,这个字串的一个一个变调名,就是叫 name oh no。 然后接下来我会做一个匹配,用一个一辅一句来判断,比如说我会说 f matches, 这个里面呢,我会用的就是我们这个叫做呃 呃,距离,那么你在这里写呢?为什么我要用距离啊?其实我们你看我这个图片和数据库里面所有的人呢,做了一个距离的计算,对吧?那么这里呢,其实我会拿到一个,我想拿到一个最小的,什么意思啊?比如说 我摄像头检测到一个人脸了,对吧?我和这里的两张人脸作为一个对比,他最后给我出出来的数据,比如说和他比较相似,那么和他比如说不相似,那么他的距离就比较短,就比较小, 那么这个纸呢?和他的距离就比较大,对不对?那我就想拿到这个最小的一个距离,就说最相似的那个距离,那么这里呢?我就可以这样写,可是我想拿到一个最相似的距离或最小的距离,他又叫 mp, 里面有个叫二哥,对吧?好,二哥 mix, 二哥 mi, 对吧?拿到一个最小距 距离,通过这个方法呢,这个呢?派这个方法呢?他就可以拿到一堆数据当中所有距离当中一个最小的,说白了我就挑那个和我最相似的那个人脸的一个距离,这样我就拿到了,对吧?拿到之后我这里就可以做判断了,我会把这个最相似的距离拿过来。这个匹配,哎, 你是否和我是就你我拿到的这个人呢?或这个距离是否在我这个数据库里面存在?如果存在呢?我就说,哎,匹配上了,如果不存在,那我就说没有匹配上,结果这边呢?可以这样写, 对吧?就说如果他能够匹配上,能够匹配上,那你就去我这个数据库里面嘛,在这里在这个内幕词里面找对应的名称就可以了,对应的名字,对吧?就这里呢?如果你匹配上了,我就这边给你返回相对应的名称。 ak, ak, 其实这个这个二嘎,他的结果呢?他不是一长串的什么什么距离,那个很小,数点特别长,不是他返回的,可能就是一些什么零,对吧?什么一二正下标,就这个返回的他不是具体的数值,而是他对应的下标 啊,所以这个我这边如果这样写,各位不太明白,我就可以这样写, index 就下标的意思吗?我可以这样写,这样呢,可能大家理解起来就比较简单一点,就是 他最后返回的是一些下标,你知道吧?所以我通过这个 max 呢,就可以去找他那个对应的下标,对吧?去找他那个下标,如果他在我们这个呃赢这个数据库里面,那我就给我就说你已经匹配匹配上了,所以呢,我就可以把你这个下标拿过来,去 找他对应的这个 name, ok, 就是在这个 names 里面去找对应的这个 names, 可以,最好可以这样写,因为如果我不嫌 index 呢?很多朋友可能以为就是,哎,你这个距离那么长的数字,对吧?怎么匹配的?其实它返回的是一些下标, ok, 这样我们就能够匹配上了。 那接下来呢,匹配上之后我们要干嘛?我们是不是你要绘制这个人脸的矩形框了,对吧?我把这个备注拿拿过来, 然后绘制。人家举行过,怎么绘制啊?是不是用我们的 rectangle, 对吧? record tango, 首先是我们的 fram, 对吧?然后呢是不是你要坐标给他一个坐标?一共是两个坐标吧,对吧?我们这样先写一下, 然后呢我会这样写边框,举行的边框给他一个颜色粗细,对吧?里面的坐标,第一个坐标就是第一个点的坐标嘛?这个点的坐标很好写哦。首先是一个类 吗?然后呢是一个套,对吧?这个我们在前面的几期视频当中也给大家讲过,我这里就不再重复了。为什么这么去写?因为你一个矩形啊,你一张一拖,对吧?他这里有一个点,然后呢?然后他对角线也有一个点,这样我们就能画出一个矩形, 画出个矩形框,所以这个就是第一个点的一个坐标,那这个呢?就是一个对角线的一个坐标。 ok, 这样我们就能够把一个矩形框给他画出来, ok, 举行框我们已经画出来,那接下来你是不是还要把下面就那个,我要,因为我要显示对应的一个名字嘛,所以那个我也要画一个小的举行框,对不对?因为我要在这个举行框下面显示名称,结果呢?还想再画一个小的举行框, 那怎么画?是不是还是用 rectangle 来画,对吧? recotangle, 然后呢?是 frame, 然后这里的坐标呢?一定要注意这里的坐标,我先不写坐标,然后呢, 我先这样,不然大家可能容易弄混,然后这里还是有一个有零点二五五, 然后呢?有时候宽度还是三八,比如说,因为,呃,我还是给各位看一下 ppt 照,一定要看一下的,不然不容易了解。你看我上面一个这种绿色的一个框,把人家框住了,对吧?然后在下面,下面也就说我想显示人的一个名字在这里,对吧?那你这边是不是 往下就是,呃,他的的第一个点,就是这这个点的坐标和他的横横坐标,呃,和他的这个横坐标是相似的,重坐标是,对吧?呃,重坐标是相似的,横坐标是不同横坐。呃,看一下,哦, 横坐标相同,重坐标是不同的,对吧?第一个点就这个点,他的横坐标是相同,重坐标是不同,对吧?因为重坐标低, 是在这边是零零吗?那你这边的动作标肯定不是零零了,对吧?那这里呢,也是一样的,这里和他的众坐标,众坐标是一致的,但红坐标又不同,所以我们这边可以这样去计算,这个就主要是一个计算的一个 计算的一个过程,比如我们这边可以说他的横坐标相同,对吧?第一个点的横坐标相同,动作标不同,那我就这样写吧, ot 点三十,比如说,因为我是显示在各位朋友,再看一下,我是显示在他下方,对不对?下方,所以呢,我用这个 bottom, 其实这边不用减加也行,我用加吧啊,当然我们待会可以看一下效果, 加一下就行了,因为剪的话这个效果感觉有点丑。然后这边呢,继续一个 right, 这样 bottom, 我们具体待会会看一下效果,来调整他这个坐标的一个位置,我们可以调整的,因为 这边呢,我也是感觉应该是这样的,我们待会可以试一下。啊,这样呢,我们就把这个名称的矩形框给他绘绘制出来。名字的矩形框绘制出来了,那接下来我们要干嘛?你是不是要在这个矩形框里面写上他的名字呀?对吧?所以我们这边可以这样写, 显示啊,啊,显示吧名字,我们把这个改成时期显示名字, ok, 然后呢,我们实现一下,怎么显示啊?是不是我们 cv 库里面叫做 put text 这个功能,对不对?然后呢,是我们的 fram 这个图片,原始图片,然后是我们的要显示的名字,这个名字呢,我在这里已经给大家注视了, 如果他不认识就显示,哦, no, 不认识,如果认识他就会去这个 name 里面根据下标去检索 检索,如果是第一个就是刘德华,第二就郭富城,他会一一对应的去检索,然后这边呢就会显示,然后呢给他一个坐标,比如说这样写吧, let 也是左边的,对吧?这我给大家加个十吧, 这个比较好理解。坐标,这个比较好写,这个显示你只需要,呃,加三十吧,加三十,对,然后呢这个跟这个和上面的要一致,就这个这两我们先一致的看一下,加三十,然后呢我们这个 bottom 减三十,我们这样试一下,然后看一下效果,然后我们的字体,字体是不是之前讲过啊?你不用去记,用这个 complex, 默认的 complex, 然后是一,然后呢是我们的啊,字体颜色,我们就这样写, ok, 然后呢字体的一个大小粗细, ok, 这样就可以了,这样就可以了,我们继续这样,我们就把字体给他写上去了,对吧?写上去之后我们是不是要看一下整体的一个显示效果啊?整体的显示效果,呃,这个很简单,直接是用我们的这个 c v m 秀就可以了, 比如说我们这边叫 face recognition, 对吧?然后呢把这个 flip 给它显示出来就可以了,这边应该是十八了,对吧?我们这边写一下,改成十八, 显示整体效果,这样就可以了,看有没有问题,哎,不对,那这个应该出来,不能在负循环里面,不然会爆错,这样就可以了。那接下来我们是不是要做一个判断,就说如果你这边按下了这个 esc 键,或者说 q 键, q 键,那么我就退出,如果你按下了这个 q 键,我就退出,只用一个 f 一句,然后呢用个 y k, 这个我们在之前讲了很多遍了,我就不去讲这个 功能了,他很固定你,如果你按下了 q 键,我就退出,整个这个循环也就关闭啊,就把整个程序都给他终止了。最后呢,我们会关闭所有的资源。二十 说关闭所有的资源,怎么关闭呢?是不是我们有个叫 cap, 对吧?哎,我看一下是不是在 这边有个叫 cup, 对吧? frake 应该是我们的 cup 点 release release, 然后呢? 然后是什么?是我们的 cv, destroy or windows, 没问题吧?我们会释放所有的资源,对吧?然后我们看一下有没有问题, 没问题,看一下。我担心这个坐标显示的时候可能会有点乱,因为这个坐标你需要算一下的他那个位置,不过影响不大。我们先看一下有没有问题,我们先运行一下,看一下效果。 哎,好像有问题哦好像有问题哦。在这里他说 list index out of range 超出了界限,在四十八号,在这里我们看一下是哪里的问题 啊?二个,对吧? indexes, 然后我们这边用了一个 f matches, 对吧?匹配,我们进一个匹配,然后呢,如果如果他匹配上了,我们就找到他对应这个 names, 对吧?看一下哪里的问题 哦,错呢?你看到他这里说超出了这个范围,其实啊,这里是没有问题的。错,是错在哪里呢?我们这边啊漏写了一个,一漏写了一步,就是在这里漏写了一个东西,在这里出错了, 就我们这边必须要加上他的一个坐标,不一个啊?这个零为什么呢?要提取一下呢?因为我们这边呢,你会发现我们这边是一个人脸,对吧?那么我刚才讲过了,如果这张图 边上有多张人脸的话,那么你这边他肯定就说你这个返回,如果我不写零的话,他返回的是一长串的这个这个 encoding, 就所有的编码,比如说三张人脸,那么他这边拿到的 就是三张人脸的一个特征变吧。那今那我们这边是一个数据库,我们知道他只有一张人脸,所以说我们就只只取第一个人脸的一个数据,所以我们这边必须要加上零, 这个他的作用就是说我们提取里面第一个人脸的一个特征编码,第一个人脸特征编码,我们比如我们这个图片他就一张人脸,对吧?那么我这边计算出来之后,你一定要把它提取一下,就加上这个零, 他就提取他的这个第一个特征编码,如果你这边不加上的话,他就会报错,而且报错呢还很奇怪,他还报错在这里,这里根本就没有超出他的界限和 范围,所以呢我们这个写代码呢,他有时候我们一旦一不小心啊这个就报错,而报错之后你会花很多时间去找这种小问题,这种小问题有时候你很难去一下子找到的,就是,所以我们这个一定要注意,一定要注意,那我们在运行下看看 有没有问题,如果有问题我们就再找问题,我们运行一下让一下, 哎,现在是没有问题,对吧?只是呢他有点卡, 他只是有点卡而已,我们先退出。 呃,有点卡,主要是第一个呢卡可能和我们这个算法有问题吧。还有一个呢, 就是我们这边这个视频,可能这个框窗,这个窗口太大了,我把这边稍微调小一点。怎么调?我在这里稍微调小一点,比如 friend, 对吧?然后点 recise, 我把它呃,把它 recise 一下就行了。应该是这样 re recise, 然后呢?我们的 frame, 然后原图我把它调小成一半吧,就把窗口缩小为一半,这样一半大小,这样会快一点。可能会,我们这样试一下,我们再运行一下,看一下 把窗口调小一点,这样可能会速度快一点,哎,这样就可以了,对吧?你看这样它的速度会比较快一点,只是我们这个字体它显示到上方去了,我们要把这个 这个这个位置要调一下,不然那个字体在上方,对吧?我们再推出再改一下字体,再改一下这个坐标,这个坐标我们这个坐标要改一下,我看一下他往上跑了,往上跑了,就字体在这里,他往上跑了,我们只要改这里就可以了。把这几个改一下。 怎么改呢?他这个应该是不对的,这个应该是因为他往上跑了,往上跑了,我们这边肯定要减十,减十,然后左边左边加十吧, 试一下看下效果怎么样就行了。然后这边不是加,应该是减往下跑,往上跑了,这样我们再再运行,看下效果是怎样的。我们再运行一下这个,这是一个坐标的调整,如果你发现这个坐标他跑的就是 有点偏了,你可以调整一下。哎,这样就这样就可以了,你把坐标调整之后啊,他这个大小这样就可以了,对吧? 你看他现在有时候识别,是啊, no, 无法识别,然后有时候又能识别出刘德华,对吧?把我识别错误了,对,他,因为为什么他会识别错?主要就是我们这边的 数据库的素材太少了,就两张图片,所以呢,他的特征是太有限了。那么接下来呢,我们有另一门课程,就是深度学习,也就轻松学这个拍 touch, 也就深度学习的一个框架。那这是我们新的一门课程。接下来呢,我会通过卷机神经网络来给大家讲一些这种人脸识别的一些项目,它的精度包括速度啊,比这个要快的多。我们这个是算法比较传统,用的是 他集成了一个算法,比较传统,然后呢也比较慢,当然也和我的机器有关,因为我是笔记本,所以他跑起来速度就比较慢,如果你的这个设备比较高级高配, 那可能速度就比较快点。好了,那今天我们这个任务呢,就就先讲到这里,应该刚才出现一个问题啊,主要就是我们这边 要把它提取,第一个我们这个没有提取,所以他就会报错,他会报错这种小问题,其实有时候你你很难发现的,要去找一下。 ok, 那今天任务呢,我们主要是这样的,已经实现好了,那这个代码,包括整个项目的代码我都会分享在我这个云盘里面, 各位朋友可以在视频下方去找一下这个链接啊,可以找到所有的这个项目,包括代码、 ppt、 k。 那我们再稍微看一下这几个方法吧,这是我们今天调用的几个方 方法,像 distance, locations and the marks, 关键点对吧? includings, 然后比较人脸。然后呢,这边有个 ipa 的文档,改进去的朋友呢,可以去看一下,去看一下他这个官方文档。 ok, 那今天我们任务呢,先到这里,如果啊,你有任何疑问呢,可以在视频下方给我留言,那么我将及时啊进行一个回复。那欢迎各位朋友呢,继续学习后续的课程,拜拜。

今天教大家怎么装 skill, 常见的安装方式有三种,一,命令行安装。二,聊天窗口安装。三,手动安装。我们先演示一下第三种。第一步要去下载 skill, 一 般去 curlhub 上下载, 下载后解压,放到指定的文件夹。 windows 是 c users, 你 的用户名 openclaw, 然后启动 openclaw, 可以 看到已经生效了。

虽然安装 open cv 包的时候名字叫 open cv 干拍神,但在导入包的时候是写 input cvr。 为什么叫 c v r 呢?这里面的 r 并不表示 open c v 的版本号, open c v 是基于 c 或 c 加加的, c v 表示底层用的是 c 的 a p i c v r 表示使用的是 c 加加的 a p i。 这主要是一个历史遗留问题,是为了保持先后的兼容性,但为了方便,一般会这么写, 给他取一个别名,这样在打字的时候就可以少敲一个数字,不仅可以保护手指,还能提高效率。通过这行代码 就可以打印出 open cv 的版本号。恭喜你成功实现了 open cv 的第一次调用。刚才巴普老 是有剪刀, c v r 用的是 c 加加的 a p i, 它使用 nampad 来存储和处理图线,所以在安装 open cv 干拍层的时候,自动安装上的依赖库 nampad。 这时我们可以直接导入那么派的包,并打印出他的版本号。 南派又是什么东西?南派是派森专门处理高位数组的包,他用来存储和处理大型矩阵,比派森自身欠套列表结构要高效的多。另外针对数组运算提供大量的数学函数,苦真的又快又好用。

大家好,今天给大家继续分享一下 openglo 它的技能怎么去安装,也就是 skier 怎么去安装。打开这个技能的这个下载网站,然后可以去看一下, 然后我们先打开 openglo, 可以 看一下我这里边已经安装好的插件,安装好的技能有哪些, 看一下这个工具类里边有一个 pdf 的 编辑工具,这是纳米出的一个 pdf 编辑工具, 分析类里边有一个股票分析自我改进里边有一个自我反思呀,纠正这样的一个技能,然后看一下它的这个技能。官网里边纳米 pdf 编辑工具 第一步是先去点击下载 vip, 下载好以后把它解压,解压得到的文件夹放到 openklo 指定的 star 文件目录下,这样的话 重启 openclo, 然后它就会去生效,因为我用的是 wsl, 然后打开 wsl 的 这个目录,找到 openclo 里边有个 有个工作空间,这个工作空间里边有一个 skr 目录, 然后把解压到的这个文件夹放进去就可以。