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 状态异常
相关推荐
双翌视觉5 小时前
高精度视觉对位实现键盘线路薄膜定位纠偏
数码相机·计算机外设
ZPC82106 小时前
OLOv11 + 深度相机的方案实现高精度3D定位
人工智能·数码相机·算法·机器人
yeflx7 小时前
机械臂视觉抓取(三):从手眼标定到实际抓取
数码相机
深视智能科技10 小时前
弱光成像领域的EMCCD替代型科学相机革新者——Solis B518 sCMOS相机
数码相机
小彭努力中12 小时前
193.Vue3 + OpenLayers 实战:圆孔相机模型推算卫星拍摄区域
vue.js·数码相机·vue·openlayers·geojson
qq_526099131 天前
工业视觉时代,图像采集卡如何重构数据采集
图像处理·数码相机·计算机视觉·自动化
码农xo1 天前
android 设备实时传输相机采集的视频到电脑pc端 通过内网wifi 方案
android·数码相机·音视频
PHOSKEY1 天前
3D工业相机从点云数据到五轴点胶运动轨迹的转化技术
数码相机·3d
Pyeako1 天前
基于Qt和PaddleOCR的工业视觉识别报警系统开发
人工智能·python·深度学习·数码相机·opencv·ocr·pyqt5
中达瑞和-高光谱·多光谱1 天前
光谱相机选购指南:核心参数全解析
数码相机