kaiyun官方注册
您所在的位置: 首页> 其他> 业界动态> 利用数码相机SDK开发图像采集应用程序

利用数码相机SDK开发图像采集应用程序

2008-08-29
作者:陈 曙  辛 阳

摘 要:介绍柯达" title="柯达">柯达公司的数码相机开发套件" title="开发套件">开发套件SDK DC280、SDK的结构及其函数分类,并提供了一个典型的编程实例。

关键词:SDK 数码相机 开发

  数码相机作为一种目前常见的消费类商品,其基本工作原理是利用CCD光耦器件将光信号转变为电信号,经过A/D转换、数据压缩等处理后经串口或USB口在PC端应用程序" title="应用程序">应用程序控制下将图片(多为JPEG格式)传送到PC机的硬盘中。目前PC端的应用程序都由相机制造商所提供。很少有人注意到一些数码相机制造商为开发人员提供了相对丰富的SDK(Software Development Kit)资源,便于有关人员利用数码相机进行图像采集和监测方面的开发工作。SDK开发套件一般由头文件(.H)、库文件(.lib)和动态链接库文件(.dll)组成。美国柯达公司是世界相机制造业和诸多影像标准制定的带头兵。本文将以KODAK DC280 SDK为例对SDK及其应用作介绍,以使感兴趣的开发人员可以自编程序将数码相机应用在工程项目中。

1 SDK结构图

  DC280 SDK原理框图如图1所示。SDK控制层位于应用程序与指定SDK控制层(对于DC280相机此层为DC280SDK控制层)之间,它的主要作用是接收应用程序的DC280_OpenCamera()指令,同时将指定相机SDK控制层调入内存区;接收DC2x0_CloseCamera()指令,同时释放指定相机SDK控制层所占内存区。指定相机SDK层位于SDK控制层下,本层支持所有访问相机的函数,并将函数执行结果状态码(即错误代码)经SDK控制层上传给应用程序。指定相机控制层的下层为驱动程序层。驱动程序用于与外部设备直接打交道。

2 SDK函数分类

  SDK内的函数按照作用类型一般可以分为以下几类:

  (1)相机初始化函数:主要包括_CloseCamera()和_OpenCamera()。

  (2)相机控制函数: 主要包括_GetStatus()、_GetConfig()、_SetConfig()、_ControlCameraTime()、_ControlCa-

meraID()、_ControlTakePicture()、_ResetCamera()。

  (3)图片管理函数:_TakePicture()、_DeletePicture()。

  (4)图片信息获取函数:_GetCameraPictInfo()、_Get-AllPictureName()、_GetNativePicture( )。

  (5)文件传递函数" title="传递函数">传递函数:_GetFileFromCamera()、_SetFileToCamera()。

  (6)其他类型的函数:包括电池电量数据获取函数、最后一次操作返回码获取函数等。

3 SDK用法的一个典型实例

  下面举一个拍摄图片的简单实例使读者大体了解编程的一般模式,其过程如图2所示。首先是相机初始化即打开相机,然后读取目前相机中拍摄方面的参数设置,根据需要修改某些参数设置,接着拍摄图片,最后关闭相机释放内存。例程如下:

  以下为SDK用法的典型例程:

  #include “F210.h”

  OSErr ret;

  DC280_Camera Camera;

  DC280_ImgProcData ThumbImgInfo;

  DC280_TakePictInfo TakePictInfo;

  DC280_PictInfo GenericPictInfo;

  DC280_SpecificPictInfo SpecificPictInfo;

  //打开相机

  DC280_OpenCamera(VersionData, CameraData);

  //获取相机设置参数

  ret=DC280_ControlTakePicture(&Camera,TRUE,0L, (VOIDPTR)

&TakePictInfo);

  //修改需要变动的参数

  ret=DC280_ControlTakePicture(&Camera, FALSE, (VOIDPTR)

  &TakePictInfo);        //拍照

  ret=DC280_TakePicture(&Camera, TRUE, &ThumbImgInfo,&GenericPictInfo, (VOIDPTR)&SpecificPictInfo);

  //可以根据需要加上文件传递函数等

  DC210_CloseCamera(CameraData); //关闭相机

  其中DC280_ControlTakePicture的第二个参数为GetSetFlag。当其为true时表示从相机中获取设置参数;为false时表示将改动过的参数输送给相机。DC280_Camera的数据结构如下:

  typedef struct {DC210_PortNum PortNum;

DC210_BitRate BitRate;

DC210_CameraType CamType;

  BOOL CameraOpenFlag;

VOIDPTR InternalUseOnly;

  } DC280_Camera ;

  本文通过柯达公司的DC280 SDK开发工具" title="开发工具">开发工具对SDK及利用它开发相机应用程序进行了简单介绍。其他公司SDK的使用方法基本类似,只是函数名称略有不同,使用方法是一致的。SDK中函数及其参数的详细说明,可以在相机制造商的英文网站上从开发工具一览中找到。

参考文献

1 Kodak DC280 Camera Software Development Kit Library Reference Manual. Version 0.71.1999;(6)

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
Baidu
map