3 EDSDK 对象(EDSDK Objects)


markdown 复制代码
# 3 EDSDK 对象(EDSDK Objects)

EDSDK 采用分层对象模型 来表示主机 PC 与相机之间的所有可控资源。

所有对象都通过 引用(Reference) 的形式进行访问与管理。


3.1 对象层级结构(Hierarchical Structure)

markdown 复制代码
## 3.1 对象层级结构(Hierarchical Structure)

EDSDK 使用一个以 相机列表(Camera List) 为根节点的层级结构来管理对象:

markdown 复制代码
CameraList
 ├─ Camera
 │   ├─ Volume(存储卡)
 │   │   ├─ Folder
 │   │   │   ├─ Image File
 │   │   │   └─ Audio File
  • 所有连接到主机 PC 的相机都会包含在 EdsCameraListRef
  • 每个相机、存储卡、文件夹、文件都被表示为一个对象
  • 父对象可以通过 API 枚举其子对象

3.2 对象类型总览(Object Types Overview)

markdown 复制代码
## 3.2 对象类型总览(Object Types Overview)

EDSDK 中主要包含以下对象类型:

对象类型 说明
EdsCameraListRef 已连接相机的列表
EdsCameraRef 单个相机对象
EdsVolumeRef 相机中的存储介质(存储卡)
EdsDirectoryItemRef 文件夹或文件对象
EdsImageRef 已下载到主机的图像对象
EdsStreamRef 文件或内存流对象
EdsEvfImageRef 实时取景(Live View / EVF)图像对象

所有对象类型都继承自 EdsBaseRef


3.3 EdsCameraListRef(相机列表对象)

markdown 复制代码
## 3.3 EdsCameraListRef(相机列表对象)

EdsCameraListRef 表示当前通过 USB 或网络连接到主机 PC 的所有相机。

主要用途:

  • 枚举已连接的相机数量
  • 获取指定索引的相机对象(EdsCameraRef

典型流程:

markdown 复制代码
1. 调用 `EdsGetCameraList`
2. 调用 `EdsGetChildCount` 获取相机数量
3. 调用 `EdsGetChildAtIndex` 获取具体相机对象

3.4 EdsCameraRef(相机对象)

markdown 复制代码
## 3.4 EdsCameraRef(相机对象)

EdsCameraRef 表示一台具体的 Canon 数码相机。

该对象用于:

  • 打开 / 关闭会话(Session)
  • 发送拍摄、对焦、变焦等命令
  • 设置和获取相机属性
  • 注册事件回调
  • 获取存储卡对象(EdsVolumeRef

所有对相机的控制操作,都必须在 已打开 Session 的情况下 进行。


3.5 EdsVolumeRef(存储卡对象)

markdown 复制代码
## 3.5 EdsVolumeRef(存储卡对象)

EdsVolumeRef 表示相机中的一张存储卡。

  • 如果相机支持双卡,则每张卡对应一个 EdsVolumeRef
  • 该对象用于访问存储卡上的文件和文件夹

可执行操作:

  • 获取存储卡容量信息
  • 枚举文件夹和文件
  • 格式化存储卡(⚠️高风险操作)

3.6 EdsDirectoryItemRef(目录项对象)

markdown 复制代码
## 3.6 EdsDirectoryItemRef(目录项对象)

EdsDirectoryItemRef 表示:

  • 文件夹(Folder)
  • 文件(Image / Movie / Audio)

该对象用于:

  • 获取文件或文件夹信息
  • 下载文件
  • 删除文件
  • 设置文件属性(只读、隐藏等)

文件在 相机端主机端 使用的是不同的对象模型


3.7 EdsStreamRef(流对象)

markdown 复制代码
## 3.7 EdsStreamRef(流对象)

EdsStreamRef 表示一个 I/O 数据流,用于文件传输。

支持的流类型:

  • 文件流(磁盘文件)
  • 内存流(内存缓冲区)

主要用途:

  • 将相机中的文件下载到主机
  • 将主机文件加载为图像对象
  • 存储实时取景数据

3.8 EdsImageRef(图像对象)

markdown 复制代码
## 3.8 EdsImageRef(图像对象)

EdsImageRef 表示 已下载到主机 PC 的图像数据

特点:

  • 不能直接从相机端文件创建

  • 必须先通过 EdsDownload 下载,再创建 EdsImageRef

  • 可用于读取:

    • 图像属性
    • 缩略图
    • 图像参数(拍摄时的 Av / Tv / ISO 等)

3.9 EdsEvfImageRef(实时取景图像对象)

markdown 复制代码
## 3.9 EdsEvfImageRef(实时取景图像对象)

EdsEvfImageRef 表示实时取景(Live View / EVF)图像数据。

包含内容:

  • 实时画面
  • 变焦信息
  • 对焦点信息
  • 直方图数据

使用前提:

  • 相机必须支持 Live View
  • 必须先启用 EVF 输出到 PC

3.10 对象生命周期与引用计数(Reference Counting)

markdown 复制代码
## 3.10 对象生命周期与引用计数(Reference Counting)

EDSDK 使用 引用计数(Reference Count) 来管理对象生命周期。

规则:

  • 对象创建时,引用计数 = 1
  • 每次 EdsRetain → 引用计数 +1
  • 每次 EdsRelease → 引用计数 −1
  • 引用计数为 0 时,对象会被自动释放

⚠️ 开发注意事项

markdown 复制代码
- 通过 API 获取的对象通常已经隐式增加了引用计数
- 每一个获取的对象,最终都必须对应一次 `EdsRelease`
- 否则会导致内存泄漏或 SDK 状态异常
相关推荐
拓朗工控6 小时前
视觉检测行业工控机选型指南:核心要素与避坑策略
人工智能·数码相机·视觉检测·工控机·工业电脑
小宋加油啊10 小时前
对于工业相机的认识(对机械臂的,工业方面的也可以参考)
数码相机
暂未成功人士!12 小时前
相机标定---张正友相机标定和手眼标定
数码相机·手眼标定·相机标定
大江东去浪淘尽千古风流人物1 天前
【VGGT】统一3D重建:单网络同时预测相机位姿、深度图、点云与3D轨迹的前馈Transformer架构深度解析
网络·数码相机·3d·transformer·slam·3d重建·cvpr2025
CG_MAGIC1 天前
摄像机与渲染输出:焦距、景深与Cycles/Eevee渲染设置
数码相机·3d·贴图·效果图·建模教程·渲云渲染
蝈蝈Tjguo2 天前
opencv 与摄影测量 相机坐标系的区别
人工智能·数码相机·opencv
埃科光电4 天前
打通全场景检测痛点UB系列相机赋能多元智造场景
图像处理·数码相机·计算机视觉·制造·相机
LabVIEW开发4 天前
LabVIEW 做双目视觉测距?精度不输激光雷达!
人工智能·数码相机·计算机视觉·labview·labview知识·labview功能·labview程序
qq_526099134 天前
双目立体视觉相机技术原理、性能影响因素与工业应用研究
数码相机
3DVisionary4 天前
高温下钢管如何测应变?数字散斑DIC高温压缩测试方案
数码相机·学习·全场应变测量·实验力学·数字散斑dic·高温材料测试·钢管轴向压缩