Workswell远程协议客户端
wrpclient的Python项目详细描述
欢迎使用WRP客户端文档!WRP客户机和WRP Server是驱动程序的两个部分,允许使用Python连接到Workswell InfraRed Camera。这个存储库包含用Python编写的客户机部分。第二部分,WRP Server,是用C语言编写的,因为Workswell公司只提供和支持通过C#SDK而不通过任何其他语言访问摄像机。在
安装
安装WRP客户端的最简单方法是从pypi:
pip install wrpclient
另一种方法是构建此存储库:
^{pr2}$使用
这个项目是使用asyncio库实现的。但是由于使用asyncio库对Python初学者来说可能会有一点问题,因此也有一些关于异步的同步包装器。首先,我们必须创建一个客户端类的实例,然后将其连接到服务器:
fromdatetimeimportdatetimeimportwrp_clientimportasyncioclient=wrp_client.Client()SERVER_IP_ADDRESS="127.0.0.1"# synchronous wrapper for the method (coroutine)# client.connect_async(ip_adress=SERVER_IP_ADDRESS)client.connect(ip_adress=SERVER_IP_ADDRESS,timeout="20")
一旦客户机连接到服务器,我们就可以得到服务器识别的所有摄像机的列表。在
# get all camerasall_cameras=client.get_cameras(timeout="20")
或者我们只能用序列号识别一个摄像头。如果摄像机不可用,则引发ValueError异常。 然后我们必须打开相机获取帧:
# find camera with specific serial numbermy_camera=client.get_camera(serial_number="ABCDEF",timeout="20")my_camera.open(timeout="20")# Return 2D frame (numpy matrix) with dtype np.float32 filled with raw data (decimal values of temperatures)frame=my_camera.get_frame(timeout="20")
如您所见,上面所有的函数都有参数超时。这是因为每个函数都在发送一些请求,并期望从服务器得到响应,而服务器的延迟取决于摄像机的延迟。对于更高级的用户,也有这些函数的异步版本。它们被命名为xxx\u async,如client.connect_异步。在
您也可以要求相机提供连续的帧流:
defcallback(frame):time_str=datetime.now().strftime("%Y-%m-%d-%H-%M-%S-%f")frame_color=cv2.applyColorMap(frame,cv2.COLORMAP_JET)cv2.imwrite(f"frame-{time_str}.jpg",frame_color)# give handler for continuous shot that saves colorized images with timestamp suffixmy_camera.start_continuous_shot(callback)# wait some time to collect imagesasyncio.sleep(5)my_camera.stop_continuous_shot(callback)
如果要在IPython环境中使用API(最常见的是Jupyter笔记本电脑),则必须在使用wrpclient之前安装Nest asyncio并运行以下代码:
importnest_asyncionest_asyncio.apply()
文件
您可以在上面找到安装指南和使用示例。还包含类和方法描述(API)的文档的完整版本可以在ReadTheDocs page上找到,或者您可以使用代码从存储库构建它:
git clone https://github.com/Kasape/wrpclient.git
cd wrpclient/docs
pip install sphinx
make html
然后在地址file://<path_to_repo>/docs/_build/html/index.html上用浏览器打开它。在
许可证
此项目具有GNU GPLv3许可证。在
- 项目
标签: