1. 磐创AI首页
  2. Medium

用Python构建了一个手掌检测和手部跟踪模型。(第二部分)


嘿,伙计们,很高兴在这里见到你们。让™继续我们关于构建手部跟踪模型的项目。这是本教程的第二部分,因此,如果您还没有阅读第一部分,那么现在就使用它并设置您的环境。

在上一篇文章中,我们了解了我们的库。我们要把它们安装在我们的jupyter笔记本上。那么,让我们现在从我们停止的地方继续™。

步骤5:安装和导入库:OpenCV和MediaPipe

!pip安装mediapipe openCV-python

运行单元,您的库就会安装。

2.导入库。

我们将导入这些库:

A.mediapipe MediaPipe库。

b.CV2?EURE“OpenCV库。

用于文件操作和在您的机器上存储图像。

D.UUID-EURO“用于为您的图像提供唯一的ID。

步骤6:了解通过网络摄像头捕获图像(或帧)的代码。

为了捕获用于检测的图像,我们将使用OpenCV(CV2)提供的函数。

我将编写一个函数,该函数弹出一个窗口并访问您的网络摄像头。

好了,伙计们,这就是特殊的挡路。我声明了一个名为CAPTURE_FRAMES的变量,它将调用VideoCapture(0)并弹出访问网络摄像头的窗口。

为了使窗口持久显示在我们的屏幕上,我使用了一个while循环,它将使用.read()函数读取帧或图像。

当使用OpenCV读取图像文件时,颜色的顺序为BGR(蓝色、绿色、红色)。另一方面,假定颜色的顺序是RGB(红、绿、蓝),因此我们使用.cvtColor()转换了图像帧。

imshow(标题,图像)只是用来显示标题为“EUROUREœHAND TRACKING MODEL?EURO�”的图像。

不要运行它,否则,它不会关闭,直到您关闭笔记本电脑。™。当窗口遇到操作时,您需要关闭窗口。此操作将用作关闭网络摄像头的触发器。

因此,让-euro™s指定操作。

我已经添加了一个指定操作的if语句。如果您按?EUROUœo?EURO�(您可以指定任何)键,窗口将关闭。

该操作将中断循环并运行cv2.delestyAllWindows()函数,该函数将销毁我们创建的所有窗口。

最后,您现在可以访问您的网络摄像头了。运行代码以了解其功能。你可以看到窗户弹出,你美丽的面孔出现在那里。

第七步:渲染手部的关节和地标。

这段特定的代码允许使用MediaPipeAPI呈现我们手上的地标。

mp_drawing=mp.solutions.drawing_utilsmp_hands=mp.solutions.hands

步骤8:检测图像。

让-uro™重新映射我们检测图像所需做的事情:

将所有这些结合到代码中,我们就得到了这个。

不要不知所措,让™一步一步地了解每个代码的作用:

最小检测置信度

手部检测模型中介于0和1之间的最小置信度值,以将检测视为成功。

最小跟踪置信度(_R)

手部检测模型中介于0和1之间的最小置信度值,以将跟踪视为成功。

img_process=hands.process(Image)

此代码处理图像。如您所见,hands=mp_hands.Hands(min_detection_confidence=0.8,(MIN_TRACKING_CONFIRITY=0.5)用于检测,因此我在单元格的开头使用此代码:带有MP_HAND。Hands(MIN_DETACTION_CONFIRITY=0.8,MIN_TRACKING_CONFIRITY=0.5)作为手:

图像=cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)

它用于将图像重新着色回BGR形式。

用于渲染地标


IF条件检查是否在图像上检测到手。函数的作用是:返回从图像中检测到的所有地标的坐标。

如果地标存在,则会使用其下面编写的代码呈现它们,因此mp_draing.raw_landmark(参数)实际上是在绘制地标。看看它的五个参数:

答:image-uro“它接受图像或帧作为输入。

b.手-欧元“手作为图像内部的输入。

C.MP_hands.HAND_CONNECTIONS

D.MP_Drawing.DrawingSpec(Parameters)–“它有3个参数,一个是它在你手上画的连接线的RGB色码,然后是连接线的粗细,最后是半径。

e.mp_Drawing.DrawingSpec(Parameters)–“它还接受3个参数,一个是它在您手上绘制的地标点的RGB颜色代码,然后是地标点的厚度,最后是半径。

最后,当您运行代码时,检测实际上正在进行。

太棒了!


请原谅我的网络摄像头质量太差了。不过,它工作得非常好。自己试一试,玩弄你的代码。

所以,现在我们已经准备好了我们的模型,它可以检测手掌并跟踪手部。

步骤8:从Local文件夹中的Model输出图像。

最后也是最后一步,我们将使用os和uuid包来输出文件夹中的图像。

os.mkdir(检测后的欧元œ输出图像?欧元�)

2.将?EUROU˜检测图像?EUROURE™单元格复制到一个新的单元格中,并将代码修改为:

cv2.imwrite(os.path.Join(âuro˜Output Imagesâuro™,âuro™{}.jpgâuro™.format(uuid.uuid1(),image)

这段特定的代码挡路加入了输出图像文件夹的路径,并继续添加图像,直到uuid包自动生成的唯一id不退出-EUROU˜HAND TRACKING MODEL-EURO™窗口。

看看我们项目的最终结果。


本教程到此结束,感谢您一直在这里。如果确实发生了任何错误,请在评论中联系我。下面是Github存储库,如果您在任何地方遇到问题,Github存储库可以帮助您。

非常感谢您的阅读!!

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/06/16/%e7%94%a8python%e6%9e%84%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e6%89%8b%e6%8e%8c%e6%a3%80%e6%b5%8b%e5%92%8c%e6%89%8b%e9%83%a8%e8%b7%9f%e8%b8%aa%e6%a8%a1%e5%9e%8b%e3%80%82%e7%ac%ac%e4%ba%8c%e9%83%a8/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息