ezgo 0.0.7__py3-none-any.whl → 0.0.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ezgo/__init__.py +43 -57
- {ezgo-0.0.7.dist-info → ezgo-0.0.9.dist-info}/METADATA +20 -118
- {ezgo-0.0.7.dist-info → ezgo-0.0.9.dist-info}/RECORD +6 -6
- {ezgo-0.0.7.dist-info → ezgo-0.0.9.dist-info}/LICENSE +0 -0
- {ezgo-0.0.7.dist-info → ezgo-0.0.9.dist-info}/WHEEL +0 -0
- {ezgo-0.0.7.dist-info → ezgo-0.0.9.dist-info}/top_level.txt +0 -0
ezgo/__init__.py
CHANGED
|
@@ -8,28 +8,37 @@ ezgo - 宇树Go2机器狗Python控制库
|
|
|
8
8
|
支持运动控制、视频流获取、UI界面等功能。
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
|
-
__version__ = "0.0.
|
|
11
|
+
__version__ = "0.0.9"
|
|
12
12
|
__author__ = "ezgo"
|
|
13
13
|
__email__ = ""
|
|
14
14
|
__license__ = "MIT"
|
|
15
15
|
|
|
16
|
-
#
|
|
16
|
+
# 懒加载模块 - 只在实际使用时才导入
|
|
17
|
+
def _lazy_import(module_name, class_name):
|
|
18
|
+
"""懒加载模块,避免导入时的依赖检查"""
|
|
19
|
+
def _import():
|
|
20
|
+
try:
|
|
21
|
+
module = __import__(f'.{module_name}', package=__name__, fromlist=[class_name])
|
|
22
|
+
return getattr(module, class_name)
|
|
23
|
+
except ImportError as e:
|
|
24
|
+
# 只在使用时才提示依赖缺失
|
|
25
|
+
raise ImportError(f"使用 {class_name} 需要安装额外依赖: {e}")
|
|
26
|
+
return _import
|
|
27
|
+
|
|
28
|
+
# 定义懒加载函数
|
|
29
|
+
_Go2 = _lazy_import('go2', 'Go2')
|
|
30
|
+
_Camera = _lazy_import('camera', 'Camera')
|
|
31
|
+
_APP = _lazy_import('ui', 'APP')
|
|
32
|
+
_Go2Camera = _lazy_import('go2_camera', 'Go2Camera')
|
|
33
|
+
_Go2VUI = _lazy_import('go2_vui', 'Go2VUI')
|
|
34
|
+
|
|
35
|
+
# 直接导入不需要额外依赖的模块
|
|
17
36
|
try:
|
|
18
|
-
from .go2 import Go2
|
|
19
|
-
from .camera import Camera
|
|
20
|
-
from .ui import APP
|
|
21
|
-
from .go2_camera import Go2Camera
|
|
22
|
-
from .go2_vui import Go2VUI
|
|
23
37
|
from .eztk import EasyTk
|
|
24
38
|
from .ezcamera import Camera as EzCamera
|
|
25
39
|
except ImportError as e:
|
|
26
|
-
|
|
27
|
-
print("
|
|
28
|
-
Go2 = None
|
|
29
|
-
Camera = None
|
|
30
|
-
APP = None
|
|
31
|
-
Go2Camera = None
|
|
32
|
-
Go2VUI = None
|
|
40
|
+
# 这些模块应该能正常导入,如果失败则显示错误
|
|
41
|
+
print(f"错误: 无法导入核心模块: {e}")
|
|
33
42
|
EasyTk = None
|
|
34
43
|
EzCamera = None
|
|
35
44
|
|
|
@@ -45,49 +54,26 @@ __all__ = [
|
|
|
45
54
|
"__version__"
|
|
46
55
|
]
|
|
47
56
|
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
try:
|
|
54
|
-
import cv2
|
|
55
|
-
except ImportError:
|
|
56
|
-
missing_deps.append("opencv-python")
|
|
57
|
-
|
|
58
|
-
try:
|
|
59
|
-
import numpy
|
|
60
|
-
except ImportError:
|
|
61
|
-
missing_deps.append("numpy")
|
|
57
|
+
# 懒加载属性访问器
|
|
58
|
+
class _LazyModule:
|
|
59
|
+
def __init__(self, import_func):
|
|
60
|
+
self._import_func = import_func
|
|
61
|
+
self._module = None
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
def __call__(self, *args, **kwargs):
|
|
64
|
+
if self._module is None:
|
|
65
|
+
self._module = self._import_func()
|
|
66
|
+
return self._module(*args, **kwargs)
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
print("=" * 60)
|
|
80
|
-
print("警告: ezgo 缺少以下依赖包:")
|
|
81
|
-
for dep in missing_deps:
|
|
82
|
-
print(f" - {dep}")
|
|
83
|
-
print()
|
|
84
|
-
print("请安装缺少的依赖包:")
|
|
85
|
-
print(" pip install opencv-python numpy Pillow netifaces")
|
|
86
|
-
print(" # unitree-sdk2py 需要从官方源安装")
|
|
87
|
-
print("=" * 60)
|
|
88
|
-
return False
|
|
89
|
-
|
|
90
|
-
return True
|
|
68
|
+
def __getattr__(self, name):
|
|
69
|
+
if self._module is None:
|
|
70
|
+
self._module = self._import_func()
|
|
71
|
+
return getattr(self._module, name)
|
|
72
|
+
|
|
73
|
+
# 创建懒加载对象
|
|
74
|
+
Go2 = _LazyModule(_Go2)
|
|
75
|
+
Camera = _LazyModule(_Camera)
|
|
76
|
+
APP = _LazyModule(_APP)
|
|
77
|
+
Go2Camera = _LazyModule(_Go2Camera)
|
|
78
|
+
Go2VUI = _LazyModule(_Go2VUI)
|
|
91
79
|
|
|
92
|
-
# 在导入时进行依赖检查
|
|
93
|
-
_check_dependencies()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ezgo
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.9
|
|
4
4
|
Summary: 宇树Go2机器狗Python控制库
|
|
5
5
|
Author-email: ezgo <noreply@example.com>
|
|
6
6
|
License: MIT
|
|
@@ -49,8 +49,6 @@ Requires-Dist: unitree-sdk2py; extra == "full"
|
|
|
49
49
|
- 📷 **摄像头控制**: 支持图片获取和视频流处理
|
|
50
50
|
- 🔊 **声光控制**: 支持LED灯光和音量控制
|
|
51
51
|
- 🎮 **UI界面**: 提供图形化控制界面
|
|
52
|
-
- 🖼️ **EasyTk界面**: 简化的tkinter界面封装,适合教学使用
|
|
53
|
-
- 📹 **EzCamera摄像头**: 优化的摄像头控制,支持多平台和硬件加速
|
|
54
52
|
- 🔧 **易于使用**: 简洁的API设计,支持懒加载
|
|
55
53
|
- 📦 **可选依赖**: 核心功能轻量,按需安装依赖
|
|
56
54
|
|
|
@@ -214,64 +212,6 @@ if robot.init():
|
|
|
214
212
|
robot.AutoRecoverSet(False)
|
|
215
213
|
```
|
|
216
214
|
|
|
217
|
-
### EasyTk 简化界面开发
|
|
218
|
-
|
|
219
|
-
```python
|
|
220
|
-
import ezgo
|
|
221
|
-
|
|
222
|
-
# 创建EasyTk窗口(自动适配灵芯派480x800分辨率)
|
|
223
|
-
app = ezgo.EasyTk(title="机器狗控制", size="480x800")
|
|
224
|
-
|
|
225
|
-
# 添加标签
|
|
226
|
-
label = app.add_label(text="欢迎使用ezgo", font=("SimHei", 24))
|
|
227
|
-
|
|
228
|
-
# 添加按钮
|
|
229
|
-
def on_click():
|
|
230
|
-
print("按钮被点击了!")
|
|
231
|
-
|
|
232
|
-
button = app.add_button(text="点击我", command=on_click)
|
|
233
|
-
|
|
234
|
-
# 添加图片显示(支持文件路径、OpenCV图像、PIL图像)
|
|
235
|
-
image_label = app.add_label(image="path/to/image.jpg")
|
|
236
|
-
|
|
237
|
-
# 运行主循环
|
|
238
|
-
app.root.mainloop()
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### EzCamera 优化摄像头控制
|
|
242
|
-
|
|
243
|
-
```python
|
|
244
|
-
import ezgo
|
|
245
|
-
import cv2
|
|
246
|
-
|
|
247
|
-
# 创建摄像头对象(自动适配平台)
|
|
248
|
-
camera = ezgo.EzCamera(index=0, width=640, height=480, fps=30)
|
|
249
|
-
|
|
250
|
-
# 打开摄像头
|
|
251
|
-
if camera.open():
|
|
252
|
-
print("摄像头打开成功!")
|
|
253
|
-
|
|
254
|
-
# 读取最新帧
|
|
255
|
-
frame = camera.read()
|
|
256
|
-
if frame is not None:
|
|
257
|
-
# 保存图片
|
|
258
|
-
camera.save_image(frame, "capture.jpg")
|
|
259
|
-
|
|
260
|
-
# 调整尺寸
|
|
261
|
-
resized = camera.resize(frame, (224, 224))
|
|
262
|
-
|
|
263
|
-
# 裁剪为正方形
|
|
264
|
-
square = camera.crop_to_square(frame)
|
|
265
|
-
|
|
266
|
-
# 显示图像
|
|
267
|
-
cv2.imshow("Camera", frame)
|
|
268
|
-
cv2.waitKey(0)
|
|
269
|
-
cv2.destroyAllWindows()
|
|
270
|
-
|
|
271
|
-
# 关闭摄像头
|
|
272
|
-
camera.close()
|
|
273
|
-
```
|
|
274
|
-
|
|
275
215
|
## API 参考
|
|
276
216
|
|
|
277
217
|
### Go2 类
|
|
@@ -367,47 +307,6 @@ if camera.open():
|
|
|
367
307
|
- `set_volume(level)`: 设置音量 (0-10)
|
|
368
308
|
- `get_volume()`: 获取当前音量
|
|
369
309
|
|
|
370
|
-
### EasyTk 类
|
|
371
|
-
|
|
372
|
-
简化的tkinter界面封装,专为教学和快速开发设计。
|
|
373
|
-
|
|
374
|
-
#### 主要方法
|
|
375
|
-
|
|
376
|
-
- `__init__(title="APP", size=None)`: 初始化窗口,自动适配灵芯派
|
|
377
|
-
- `add_frame(master=None, **kwargs)`: 添加框架容器
|
|
378
|
-
- `add_label(master=None, **kwargs)`: 添加标签,支持文本和图片
|
|
379
|
-
- `add_button(master=None, **kwargs)`: 添加按钮
|
|
380
|
-
- `config(widget, **kwargs)`: 配置组件属性
|
|
381
|
-
|
|
382
|
-
#### 特性
|
|
383
|
-
|
|
384
|
-
- **自动适配**: 在Linux系统下自动设置480x800分辨率和全屏模式
|
|
385
|
-
- **简化布局**: 使用pack布局,简化界面开发
|
|
386
|
-
- **图片支持**: 直接支持文件路径、OpenCV图像、PIL图像
|
|
387
|
-
- **教学友好**: 适合学生快速上手GUI开发
|
|
388
|
-
|
|
389
|
-
### EzCamera 类
|
|
390
|
-
|
|
391
|
-
优化的摄像头控制类,支持多平台和硬件加速。
|
|
392
|
-
|
|
393
|
-
#### 主要方法
|
|
394
|
-
|
|
395
|
-
- `__init__(index=0, width=640, height=480, fps=30)`: 初始化摄像头
|
|
396
|
-
- `open(timeout=5)`: 打开摄像头,支持硬件加速
|
|
397
|
-
- `read()`: 读取最新帧(非阻塞)
|
|
398
|
-
- `save_image(frame, filename="frame.jpg")`: 保存图像
|
|
399
|
-
- `resize(frame, size=(224, 224))`: 调整图像尺寸
|
|
400
|
-
- `crop_to_square(frame)`: 裁剪为正方形
|
|
401
|
-
- `close()`: 关闭摄像头
|
|
402
|
-
|
|
403
|
-
#### 特性
|
|
404
|
-
|
|
405
|
-
- **多平台支持**: Linux(V4L2)、Windows(DSHOW)、macOS自动适配
|
|
406
|
-
- **硬件加速**: 支持MJPG格式和缓冲区优化
|
|
407
|
-
- **双缓冲**: 使用双缓冲机制避免图像撕裂
|
|
408
|
-
- **线程安全**: 独立读取线程,主线程非阻塞
|
|
409
|
-
- **帧率控制**: 精确的帧率控制,避免累积误差
|
|
410
|
-
|
|
411
310
|
## 依赖要求
|
|
412
311
|
|
|
413
312
|
### 核心依赖
|
|
@@ -460,24 +359,27 @@ pip install opencv-python numpy Pillow netifaces
|
|
|
460
359
|
|
|
461
360
|
## 更新日志
|
|
462
361
|
|
|
463
|
-
### v0.0.
|
|
464
|
-
|
|
465
|
-
-
|
|
466
|
-
-
|
|
467
|
-
-
|
|
468
|
-
-
|
|
469
|
-
|
|
362
|
+
### v0.0.9 (2025-12-09)
|
|
363
|
+
**改进**:
|
|
364
|
+
- 🔧 实现懒加载机制,避免导入时的依赖检查
|
|
365
|
+
- 🔧 只在实际使用Go2相关功能时才检查依赖
|
|
366
|
+
- 🔧 eztk和ezcamera模块可直接使用,无任何依赖警告
|
|
367
|
+
- 🔧 优化模块导入结构,提升用户体验
|
|
368
|
+
|
|
369
|
+
**修复**:
|
|
370
|
+
- 🐛 修复导入ezgo时提示netifaces等依赖缺失的问题
|
|
371
|
+
- 🐛 修复使用eztk/ezcamera时的不必要警告
|
|
372
|
+
- 🐛 实现真正的按需依赖检查机制
|
|
470
373
|
|
|
374
|
+
### v0.0.8 (2025-12-09)
|
|
471
375
|
**改进**:
|
|
472
|
-
- 🔧
|
|
473
|
-
- 🔧
|
|
474
|
-
- 🔧
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
-
|
|
479
|
-
- 📹 EzCamera支持MJPG硬件加速和V4L2优化
|
|
480
|
-
- 🎯 教学友好,简化GUI开发和摄像头操作流程
|
|
376
|
+
- 🔧 移除自动依赖检查逻辑,避免导入时的警告提示
|
|
377
|
+
- 🔧 用户按需使用功能,不再强制检查所有依赖
|
|
378
|
+
- 🔧 提升用户体验,减少不必要的警告信息
|
|
379
|
+
|
|
380
|
+
**修复**:
|
|
381
|
+
- 🐛 修复使用eztk时频繁提示unitree-sdk2py依赖的问题
|
|
382
|
+
- 🐛 修复导入库时自动检查所有模块依赖的逻辑
|
|
481
383
|
|
|
482
384
|
### v0.0.5 (2025-12-04)
|
|
483
385
|
**新增功能**:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
ezgo/__init__.py,sha256=
|
|
1
|
+
ezgo/__init__.py,sha256=jMO1jw9Xu2RG-6b1d3ce3yyL_bAF06JP3bct7knaJ9Y,2190
|
|
2
2
|
ezgo/camera.py,sha256=Vsr44vFtaop4LE0DlWyOHyvxF-jHnVO8iMPUwp5mbsE,2538
|
|
3
3
|
ezgo/ezcamera.py,sha256=6-3y-1X_L60QsWdsd5-caLoj7Quy9rpyHdp3Tq3JFbU,6536
|
|
4
4
|
ezgo/eztk.py,sha256=MHWkkZYIL1AFjUXFu2Qq8U9idJV_E1VxFUBe82dvbyA,10463
|
|
@@ -6,8 +6,8 @@ ezgo/go2.py,sha256=lSZwpYRAljcV4bAalkZXvs9X-qMaEGcuaHSNegGcX6M,31610
|
|
|
6
6
|
ezgo/go2_camera.py,sha256=nawUSLyvqTNiVRQ2sM-UdoJzqwZcySltLbCfUb0G9Qc,8614
|
|
7
7
|
ezgo/go2_vui.py,sha256=52I4Y8uqGkW9muDEnDzQ236HqVVTIgNIN_2gW5RTC48,10161
|
|
8
8
|
ezgo/ui.py,sha256=jUik6maaoemI2vsBM92OLZfJfskg54W7hwMls_gxppg,2777
|
|
9
|
-
ezgo-0.0.
|
|
10
|
-
ezgo-0.0.
|
|
11
|
-
ezgo-0.0.
|
|
12
|
-
ezgo-0.0.
|
|
13
|
-
ezgo-0.0.
|
|
9
|
+
ezgo-0.0.9.dist-info/LICENSE,sha256=Zk4eZBT3KaBhqM3LB_xN7QquwnoWsEHAoA6eLdE6W5M,1060
|
|
10
|
+
ezgo-0.0.9.dist-info/METADATA,sha256=ajPhXH35KqRk1Fr_sler7ZkTWFnafwhn5DmCTwluvPU,13559
|
|
11
|
+
ezgo-0.0.9.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
12
|
+
ezgo-0.0.9.dist-info/top_level.txt,sha256=BdCFEVD5V_4FxUtvH0BVlZKgxYnp7EKNsYs5OyFxj-g,5
|
|
13
|
+
ezgo-0.0.9.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|