1. 磐创AI首页
  2. Medium

使用Python从头开始使用非触摸屏应用程序。

简介

我很高兴能与大家分享我在日常生活中使用Python的另一个项目。

听起来很酷,对吧?

是的,这很酷,更重要的是,这个想法有很多有用的应用。尤其是在大流行时期,人们不愿意触摸许多东西(你知道的,屏幕、触摸板等)。

想象一下,一个火车站或自动取款机有许多触摸屏来订/买票或取现金。简单地用手势来控制这些触摸板,而不是在这样做之前考虑给你的手消毒,会不会很好?

我想会的。

因此,在本文中,我将讨论任何人如何从头开始为非接触式屏幕创建Python应用程序。包括我的代码。

最后,我将谈谈它的局限性和未来的发展。

让我们共同抗击这场流行病。

非接触式屏幕元素

以下是几个需要回答的重要问题:

我们要开发的是什么呢?

一块无触摸屏!

它应该做些什么呢?

假设您已经看过我上一篇关于计算机视觉(OpenCV)基础知识的文章,这些信息足以开始开发我们的无触摸屏应用程序!previous article

让我们走吧!

应用程序逻辑

要重新创建触摸板/鼠标功能,我们需要一些运动和点击控制。

因此,我们可以将我们的逻辑分解为两个单独的部分-每个功能控件一个。

此外,创建我们的应用程序界面时牢记这两个控件选项会很好。换句话说,将屏幕分成两个部分,这两个部分将彼此独立操作。

所以,让我们按顺序制造这些部件。

编码

正如我之前对生产力应用程序所做的那样,先从通用界面开始,然后再转到逻辑和功能,这会很有用。productivity application

我将带领您一步一步地完成这个项目,因为我正在构建和改进它。

应用程序界面

要创建接口,我将使用上述文章中描述的OpenCV方法。

我试图在我的代码上编写过多的注释,这样更容易理解。但是,如果您有任何疑问或问题,请查看我以前的文章或/然后问我。

代码如下所示

只需复制-粘贴您的Python脚本,您就会得到以下框架。

结果如下所示(我手中分别有和没有记号笔):



以下是对我的剧本的几点评论:

  • 正如我们所看到的,我添加了几个单词和箭头来指导用户有关功能(移动和单击)。
  • 此外,我对过滤应用了一个阈值来剔除除标记颜色之外的所有颜色。(不过,此部分需要由用户进行调整)。在上面的截图中,我拿着一个绿色的记号笔。
  • 这些框架清楚地指出了每个功能适用的区域(请参阅下一节)。

到目前为止,我们已经建立了我们的应用程序界面和颜色过滤例程。这很好,但它的核心只不过是我以前作品的融合。我认为这件事的特别之处在于,到最后它将成为一个独立的产品,我将一些已知的元素和新的元素结合在一起。

因此,让我们继续讨论我们的应用程序功能,即如何处理该框架和过滤后的颜色。

功能(有趣的部分)

其他Python包

应用程序的这一部分需要额外的Python包。

我们需要一些东西来允许我们的Python脚本控制鼠标和键盘,以自动化与其他应用程序的交互。

我将使用Pyautogui图书馆。

现在,我们已经准备好开始这个应用程序的有趣部分了!

框架中增加了一项内容

在这一点上,我意识到我的记号笔相当长。

因此,实际定义一个等同于此标记中心的点源会很有帮助。为此,我们需要添加以下方法

因此,我们在标记的中心有一个漂亮的红色粗体点。

简而言之,如果您手中没有标记,程序将引发异常并退出。尝试接住挡路可以防止这一点被打破。

光标移动

首先,我想实现光标/鼠标移动。

但是我们究竟需要什么来移动光标呢?

我们需要知道两件事:

第一个点取决于标记的当前位置(中心)

最后一点取决于相对于我们框架的标记位置。中心方块表示保持当前位置,箭头表示向给定方向移动光标。

因此,我们需要在程序中添加以下元素:

  • 导入Pyautogui
  • 在WHILE循环中添加功能

实际上,我们将使用pyautogui.move()方法。这将把光标从它拥有的任何位置移动到我们希望它移动的任何位置。

代码如下所示

因此,我们可以在屏幕周围移动光标,而无需将一根手指放在触摸板上(请注意,这不是视频,而是gif图像,因此移动有点跳动):

此功能分为两个部分:

光标点击

其次,我想实现一个单击选项,因为移动鼠标很有趣,但它本身并不是很有用。除非这是一个人想要的。

为此,我们只需移动标记框上的标记“单击”即可激活此功能。

实际上,使用的是pyautogui.click()方法。

这里的挑战在于我们已经在使用一个标记来控制光标移动。因此,最直接的解决方案是同时使用另一个标记。

这是本应用程序的局限性之一,我将在本文末尾讨论这一问题。

但是,现在,我们用两个记号笔。

添加第二个标记检测的代码与第一个相同。主要区别在于组合了这两个标记的复合掩码,例如MASK=Threshold|Threshold2。

因此,我想通过只显示最相关的部分来节省您的一些时间(完整的代码请查看我的GitHub存储库)。

基本上,您可以在第一系列(IF-ELSE)条件之后添加此挡路。

这将产生以下框架

请注意,我在这里使用的是与新标记中心相对应的新坐标。

此外,为了使这个程序更加丰富多彩,我在右边的指针上添加了蓝色。

现在,我们完成了原型的开发,也就是程序的工作版本。有几个功能可以改进,但该程序可以按照承诺的“欧元”以非接触的方式运行。

让我们回顾一下未来可能的一些改进。

完整代码

此应用程序的完整代码可以在此处找到。here

应用程序的局限性和未来发展

我认为谈论这个程序的一些明显和不那么明显的局限性是很重要的。

总而言之,我对这个项目很满意,我希望你们能像我在工作时一样喜欢它。

最后但并非最不重要的一点是,如果您发现任何错误或有任何建议或意见,请毫不犹豫地与我联系(见下文)。

谢谢你读到最后。安然无恙。

联系方式:

看看我的GitHub吧。GitHub

在LinkedIn上与我联系。LinkedIn

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/07/%e4%bd%bf%e7%94%a8python%e4%bb%8e%e5%a4%b4%e5%bc%80%e5%a7%8b%e4%bd%bf%e7%94%a8%e9%9d%9e%e8%a7%a6%e6%91%b8%e5%b1%8f%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e3%80%82/

联系我们

400-800-8888

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

邮件:admin@example.com

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