ezgo 0.0.7__tar.gz → 0.0.8__tar.gz
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-0.0.7/src/ezgo.egg-info → ezgo-0.0.8}/PKG-INFO +9 -119
- {ezgo-0.0.7 → ezgo-0.0.8}/README.md +8 -118
- {ezgo-0.0.7 → ezgo-0.0.8}/pyproject.toml +1 -1
- ezgo-0.0.8/src/ezgo/__init__.py +41 -0
- {ezgo-0.0.7 → ezgo-0.0.8/src/ezgo.egg-info}/PKG-INFO +9 -119
- ezgo-0.0.7/src/ezgo/__init__.py +0 -93
- {ezgo-0.0.7 → ezgo-0.0.8}/LICENSE +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/setup.cfg +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo/camera.py +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo/ezcamera.py +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo/eztk.py +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo/go2.py +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo/go2_camera.py +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo/go2_vui.py +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo/ui.py +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo.egg-info/SOURCES.txt +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo.egg-info/dependency_links.txt +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo.egg-info/requires.txt +0 -0
- {ezgo-0.0.7 → ezgo-0.0.8}/src/ezgo.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ezgo
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.8
|
|
4
4
|
Summary: 宇树Go2机器狗Python控制库
|
|
5
5
|
Author-email: ezgo <noreply@example.com>
|
|
6
6
|
License: MIT
|
|
@@ -49,8 +49,6 @@ Requires-Dist: Pillow>=8.0.0; extra == "basic"
|
|
|
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,15 @@ pip install opencv-python numpy Pillow netifaces
|
|
|
460
359
|
|
|
461
360
|
## 更新日志
|
|
462
361
|
|
|
463
|
-
### v0.0.
|
|
464
|
-
**新增功能**:
|
|
465
|
-
- ✨ 新增EasyTk简化界面封装类,专为教学设计
|
|
466
|
-
- ✨ 新增EzCamera优化摄像头控制类,支持多平台硬件加速
|
|
467
|
-
- ✨ EasyTk自动适配灵芯派480x800分辨率和全屏模式
|
|
468
|
-
- ✨ EzCamera支持双缓冲机制和线程安全读取
|
|
469
|
-
- ✨ 完善图片处理功能:调整尺寸、裁剪正方形、保存图像
|
|
470
|
-
|
|
362
|
+
### v0.0.8 (2025-12-09)
|
|
471
363
|
**改进**:
|
|
472
|
-
- 🔧
|
|
473
|
-
- 🔧
|
|
474
|
-
- 🔧
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
-
|
|
479
|
-
- 📹 EzCamera支持MJPG硬件加速和V4L2优化
|
|
480
|
-
- 🎯 教学友好,简化GUI开发和摄像头操作流程
|
|
364
|
+
- 🔧 移除自动依赖检查逻辑,避免导入时的警告提示
|
|
365
|
+
- 🔧 用户按需使用功能,不再强制检查所有依赖
|
|
366
|
+
- 🔧 提升用户体验,减少不必要的警告信息
|
|
367
|
+
|
|
368
|
+
**修复**:
|
|
369
|
+
- 🐛 修复使用eztk时频繁提示unitree-sdk2py依赖的问题
|
|
370
|
+
- 🐛 修复导入库时自动检查所有模块依赖的逻辑
|
|
481
371
|
|
|
482
372
|
### v0.0.5 (2025-12-04)
|
|
483
373
|
**新增功能**:
|
|
@@ -14,8 +14,6 @@
|
|
|
14
14
|
- 📷 **摄像头控制**: 支持图片获取和视频流处理
|
|
15
15
|
- 🔊 **声光控制**: 支持LED灯光和音量控制
|
|
16
16
|
- 🎮 **UI界面**: 提供图形化控制界面
|
|
17
|
-
- 🖼️ **EasyTk界面**: 简化的tkinter界面封装,适合教学使用
|
|
18
|
-
- 📹 **EzCamera摄像头**: 优化的摄像头控制,支持多平台和硬件加速
|
|
19
17
|
- 🔧 **易于使用**: 简洁的API设计,支持懒加载
|
|
20
18
|
- 📦 **可选依赖**: 核心功能轻量,按需安装依赖
|
|
21
19
|
|
|
@@ -179,64 +177,6 @@ if robot.init():
|
|
|
179
177
|
robot.AutoRecoverSet(False)
|
|
180
178
|
```
|
|
181
179
|
|
|
182
|
-
### EasyTk 简化界面开发
|
|
183
|
-
|
|
184
|
-
```python
|
|
185
|
-
import ezgo
|
|
186
|
-
|
|
187
|
-
# 创建EasyTk窗口(自动适配灵芯派480x800分辨率)
|
|
188
|
-
app = ezgo.EasyTk(title="机器狗控制", size="480x800")
|
|
189
|
-
|
|
190
|
-
# 添加标签
|
|
191
|
-
label = app.add_label(text="欢迎使用ezgo", font=("SimHei", 24))
|
|
192
|
-
|
|
193
|
-
# 添加按钮
|
|
194
|
-
def on_click():
|
|
195
|
-
print("按钮被点击了!")
|
|
196
|
-
|
|
197
|
-
button = app.add_button(text="点击我", command=on_click)
|
|
198
|
-
|
|
199
|
-
# 添加图片显示(支持文件路径、OpenCV图像、PIL图像)
|
|
200
|
-
image_label = app.add_label(image="path/to/image.jpg")
|
|
201
|
-
|
|
202
|
-
# 运行主循环
|
|
203
|
-
app.root.mainloop()
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
### EzCamera 优化摄像头控制
|
|
207
|
-
|
|
208
|
-
```python
|
|
209
|
-
import ezgo
|
|
210
|
-
import cv2
|
|
211
|
-
|
|
212
|
-
# 创建摄像头对象(自动适配平台)
|
|
213
|
-
camera = ezgo.EzCamera(index=0, width=640, height=480, fps=30)
|
|
214
|
-
|
|
215
|
-
# 打开摄像头
|
|
216
|
-
if camera.open():
|
|
217
|
-
print("摄像头打开成功!")
|
|
218
|
-
|
|
219
|
-
# 读取最新帧
|
|
220
|
-
frame = camera.read()
|
|
221
|
-
if frame is not None:
|
|
222
|
-
# 保存图片
|
|
223
|
-
camera.save_image(frame, "capture.jpg")
|
|
224
|
-
|
|
225
|
-
# 调整尺寸
|
|
226
|
-
resized = camera.resize(frame, (224, 224))
|
|
227
|
-
|
|
228
|
-
# 裁剪为正方形
|
|
229
|
-
square = camera.crop_to_square(frame)
|
|
230
|
-
|
|
231
|
-
# 显示图像
|
|
232
|
-
cv2.imshow("Camera", frame)
|
|
233
|
-
cv2.waitKey(0)
|
|
234
|
-
cv2.destroyAllWindows()
|
|
235
|
-
|
|
236
|
-
# 关闭摄像头
|
|
237
|
-
camera.close()
|
|
238
|
-
```
|
|
239
|
-
|
|
240
180
|
## API 参考
|
|
241
181
|
|
|
242
182
|
### Go2 类
|
|
@@ -332,47 +272,6 @@ if camera.open():
|
|
|
332
272
|
- `set_volume(level)`: 设置音量 (0-10)
|
|
333
273
|
- `get_volume()`: 获取当前音量
|
|
334
274
|
|
|
335
|
-
### EasyTk 类
|
|
336
|
-
|
|
337
|
-
简化的tkinter界面封装,专为教学和快速开发设计。
|
|
338
|
-
|
|
339
|
-
#### 主要方法
|
|
340
|
-
|
|
341
|
-
- `__init__(title="APP", size=None)`: 初始化窗口,自动适配灵芯派
|
|
342
|
-
- `add_frame(master=None, **kwargs)`: 添加框架容器
|
|
343
|
-
- `add_label(master=None, **kwargs)`: 添加标签,支持文本和图片
|
|
344
|
-
- `add_button(master=None, **kwargs)`: 添加按钮
|
|
345
|
-
- `config(widget, **kwargs)`: 配置组件属性
|
|
346
|
-
|
|
347
|
-
#### 特性
|
|
348
|
-
|
|
349
|
-
- **自动适配**: 在Linux系统下自动设置480x800分辨率和全屏模式
|
|
350
|
-
- **简化布局**: 使用pack布局,简化界面开发
|
|
351
|
-
- **图片支持**: 直接支持文件路径、OpenCV图像、PIL图像
|
|
352
|
-
- **教学友好**: 适合学生快速上手GUI开发
|
|
353
|
-
|
|
354
|
-
### EzCamera 类
|
|
355
|
-
|
|
356
|
-
优化的摄像头控制类,支持多平台和硬件加速。
|
|
357
|
-
|
|
358
|
-
#### 主要方法
|
|
359
|
-
|
|
360
|
-
- `__init__(index=0, width=640, height=480, fps=30)`: 初始化摄像头
|
|
361
|
-
- `open(timeout=5)`: 打开摄像头,支持硬件加速
|
|
362
|
-
- `read()`: 读取最新帧(非阻塞)
|
|
363
|
-
- `save_image(frame, filename="frame.jpg")`: 保存图像
|
|
364
|
-
- `resize(frame, size=(224, 224))`: 调整图像尺寸
|
|
365
|
-
- `crop_to_square(frame)`: 裁剪为正方形
|
|
366
|
-
- `close()`: 关闭摄像头
|
|
367
|
-
|
|
368
|
-
#### 特性
|
|
369
|
-
|
|
370
|
-
- **多平台支持**: Linux(V4L2)、Windows(DSHOW)、macOS自动适配
|
|
371
|
-
- **硬件加速**: 支持MJPG格式和缓冲区优化
|
|
372
|
-
- **双缓冲**: 使用双缓冲机制避免图像撕裂
|
|
373
|
-
- **线程安全**: 独立读取线程,主线程非阻塞
|
|
374
|
-
- **帧率控制**: 精确的帧率控制,避免累积误差
|
|
375
|
-
|
|
376
275
|
## 依赖要求
|
|
377
276
|
|
|
378
277
|
### 核心依赖
|
|
@@ -425,24 +324,15 @@ pip install opencv-python numpy Pillow netifaces
|
|
|
425
324
|
|
|
426
325
|
## 更新日志
|
|
427
326
|
|
|
428
|
-
### v0.0.
|
|
429
|
-
**新增功能**:
|
|
430
|
-
- ✨ 新增EasyTk简化界面封装类,专为教学设计
|
|
431
|
-
- ✨ 新增EzCamera优化摄像头控制类,支持多平台硬件加速
|
|
432
|
-
- ✨ EasyTk自动适配灵芯派480x800分辨率和全屏模式
|
|
433
|
-
- ✨ EzCamera支持双缓冲机制和线程安全读取
|
|
434
|
-
- ✨ 完善图片处理功能:调整尺寸、裁剪正方形、保存图像
|
|
435
|
-
|
|
327
|
+
### v0.0.8 (2025-12-09)
|
|
436
328
|
**改进**:
|
|
437
|
-
- 🔧
|
|
438
|
-
- 🔧
|
|
439
|
-
- 🔧
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
-
|
|
444
|
-
- 📹 EzCamera支持MJPG硬件加速和V4L2优化
|
|
445
|
-
- 🎯 教学友好,简化GUI开发和摄像头操作流程
|
|
329
|
+
- 🔧 移除自动依赖检查逻辑,避免导入时的警告提示
|
|
330
|
+
- 🔧 用户按需使用功能,不再强制检查所有依赖
|
|
331
|
+
- 🔧 提升用户体验,减少不必要的警告信息
|
|
332
|
+
|
|
333
|
+
**修复**:
|
|
334
|
+
- 🐛 修复使用eztk时频繁提示unitree-sdk2py依赖的问题
|
|
335
|
+
- 🐛 修复导入库时自动检查所有模块依赖的逻辑
|
|
446
336
|
|
|
447
337
|
### v0.0.5 (2025-12-04)
|
|
448
338
|
**新增功能**:
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
"""
|
|
5
|
+
ezgo - 宇树Go2机器狗Python控制库
|
|
6
|
+
|
|
7
|
+
这是一个用于控制宇树Go2机器狗的Python库,提供了简单易用的API接口。
|
|
8
|
+
支持运动控制、视频流获取、UI界面等功能。
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
__version__ = "0.0.8"
|
|
12
|
+
__author__ = "ezgo"
|
|
13
|
+
__email__ = ""
|
|
14
|
+
__license__ = "MIT"
|
|
15
|
+
|
|
16
|
+
# 导入主要类
|
|
17
|
+
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
|
+
except ImportError as e:
|
|
24
|
+
print(f"警告: 无法导入部分模块: {e}")
|
|
25
|
+
print("请确保已安装所有依赖包")
|
|
26
|
+
Go2 = None
|
|
27
|
+
Camera = None
|
|
28
|
+
APP = None
|
|
29
|
+
Go2Camera = None
|
|
30
|
+
Go2VUI = None
|
|
31
|
+
|
|
32
|
+
# 定义公开的API
|
|
33
|
+
__all__ = [
|
|
34
|
+
"Go2",
|
|
35
|
+
"Camera",
|
|
36
|
+
"APP",
|
|
37
|
+
"Go2Camera",
|
|
38
|
+
"Go2VUI",
|
|
39
|
+
"__version__"
|
|
40
|
+
]
|
|
41
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ezgo
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.8
|
|
4
4
|
Summary: 宇树Go2机器狗Python控制库
|
|
5
5
|
Author-email: ezgo <noreply@example.com>
|
|
6
6
|
License: MIT
|
|
@@ -49,8 +49,6 @@ Requires-Dist: Pillow>=8.0.0; extra == "basic"
|
|
|
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,15 @@ pip install opencv-python numpy Pillow netifaces
|
|
|
460
359
|
|
|
461
360
|
## 更新日志
|
|
462
361
|
|
|
463
|
-
### v0.0.
|
|
464
|
-
**新增功能**:
|
|
465
|
-
- ✨ 新增EasyTk简化界面封装类,专为教学设计
|
|
466
|
-
- ✨ 新增EzCamera优化摄像头控制类,支持多平台硬件加速
|
|
467
|
-
- ✨ EasyTk自动适配灵芯派480x800分辨率和全屏模式
|
|
468
|
-
- ✨ EzCamera支持双缓冲机制和线程安全读取
|
|
469
|
-
- ✨ 完善图片处理功能:调整尺寸、裁剪正方形、保存图像
|
|
470
|
-
|
|
362
|
+
### v0.0.8 (2025-12-09)
|
|
471
363
|
**改进**:
|
|
472
|
-
- 🔧
|
|
473
|
-
- 🔧
|
|
474
|
-
- 🔧
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
-
|
|
479
|
-
- 📹 EzCamera支持MJPG硬件加速和V4L2优化
|
|
480
|
-
- 🎯 教学友好,简化GUI开发和摄像头操作流程
|
|
364
|
+
- 🔧 移除自动依赖检查逻辑,避免导入时的警告提示
|
|
365
|
+
- 🔧 用户按需使用功能,不再强制检查所有依赖
|
|
366
|
+
- 🔧 提升用户体验,减少不必要的警告信息
|
|
367
|
+
|
|
368
|
+
**修复**:
|
|
369
|
+
- 🐛 修复使用eztk时频繁提示unitree-sdk2py依赖的问题
|
|
370
|
+
- 🐛 修复导入库时自动检查所有模块依赖的逻辑
|
|
481
371
|
|
|
482
372
|
### v0.0.5 (2025-12-04)
|
|
483
373
|
**新增功能**:
|
ezgo-0.0.7/src/ezgo/__init__.py
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
|
|
4
|
-
"""
|
|
5
|
-
ezgo - 宇树Go2机器狗Python控制库
|
|
6
|
-
|
|
7
|
-
这是一个用于控制宇树Go2机器狗的Python库,提供了简单易用的API接口。
|
|
8
|
-
支持运动控制、视频流获取、UI界面等功能。
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
__version__ = "0.0.7"
|
|
12
|
-
__author__ = "ezgo"
|
|
13
|
-
__email__ = ""
|
|
14
|
-
__license__ = "MIT"
|
|
15
|
-
|
|
16
|
-
# 导入主要类
|
|
17
|
-
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
|
-
from .eztk import EasyTk
|
|
24
|
-
from .ezcamera import Camera as EzCamera
|
|
25
|
-
except ImportError as e:
|
|
26
|
-
print(f"警告: 无法导入部分模块: {e}")
|
|
27
|
-
print("请确保已安装所有依赖包")
|
|
28
|
-
Go2 = None
|
|
29
|
-
Camera = None
|
|
30
|
-
APP = None
|
|
31
|
-
Go2Camera = None
|
|
32
|
-
Go2VUI = None
|
|
33
|
-
EasyTk = None
|
|
34
|
-
EzCamera = None
|
|
35
|
-
|
|
36
|
-
# 定义公开的API
|
|
37
|
-
__all__ = [
|
|
38
|
-
"Go2",
|
|
39
|
-
"Camera",
|
|
40
|
-
"APP",
|
|
41
|
-
"Go2Camera",
|
|
42
|
-
"Go2VUI",
|
|
43
|
-
"EasyTk",
|
|
44
|
-
"EzCamera",
|
|
45
|
-
"__version__"
|
|
46
|
-
]
|
|
47
|
-
|
|
48
|
-
# 依赖检查和提示
|
|
49
|
-
def _check_dependencies():
|
|
50
|
-
"""检查关键依赖是否安装,并给出安装提示"""
|
|
51
|
-
missing_deps = []
|
|
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")
|
|
62
|
-
|
|
63
|
-
try:
|
|
64
|
-
from PIL import Image
|
|
65
|
-
except ImportError:
|
|
66
|
-
missing_deps.append("Pillow")
|
|
67
|
-
|
|
68
|
-
try:
|
|
69
|
-
import netifaces
|
|
70
|
-
except ImportError:
|
|
71
|
-
missing_deps.append("netifaces")
|
|
72
|
-
|
|
73
|
-
try:
|
|
74
|
-
import unitree_sdk2py
|
|
75
|
-
except ImportError:
|
|
76
|
-
missing_deps.append("unitree-sdk2py")
|
|
77
|
-
|
|
78
|
-
if missing_deps:
|
|
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
|
|
91
|
-
|
|
92
|
-
# 在导入时进行依赖检查
|
|
93
|
-
_check_dependencies()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|