ctypes 库 — 在 Python 中调用动态链接库

ctypes is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python.
ctypes是Python的外部函数库。它提供了C兼容的数据类型,并且允许调用动态链接库/共享库中的函数。它可以将这些库包装起来给Python使用。

在使用Python开发应用程序的时候,往往不可避免的需要用到其他语言编写的库中的函数,例如需要C语言库做一些效率上的补充,或者不同语言系统间做数据交互。使用python中的ctypes库可以很方便的调用windows的dll或linux下的so文件。

现在来简单的介绍一下ctypes的用法。
1.引入ctypes库

2.假设有了一个用于做加法的DLL(add.dll),该DLL有一个符合cdecl调用约定(这里强调调用约定是因为,stdcall调用约定和cdecl调用约定声明的导出函数,在使用python加载时使用的加载函数是不同的)的导出函数Add。

Continue Reading…

手势识别相关实现思路简谈

手势识别(Gesture Recognition)是一个很有趣的东西,是手势操作(Gesture Operation)的核心部分。

手势操作常见的应用场景就是我们平时在使用浏览器浏览网页或使用触摸设备上的APP时,通过简单易懂的手势来简化复杂的操作。例如画一个对勾“√”新建一个页面,画一个错叉“×”关闭一个页面,属于新一代的人机交互方式之一。

从技术原理上来讲,手势其实是一系列的点的集合,以链表或数组的形式存储在计算机中。手势识别则主要是通过算法将这一系列的采集到的点与预留的手势数据进行匹配。怎样在保证容差不能过大的情况下提高匹配率则是手势识别算法中的难点。(既不能把a识别成o,也不能将o和O识别成不同手势)而要实现上述目标,多用到计算机视觉和图像处理中的一个概念:特征提取。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。
Continue Reading…