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

数码相机作为一种目前常见的消费类商品,其基本工作原理是利用CCD光耦器件将光信号转变为电信号,经过A/D转换、数据压缩等处理后经串口或USB口在PC端应用程序控制下将图片(多为JPEG格式)传送到PC机的硬盘中。

目前PC端的应用程序都由相机制造商所提供。很少有人注意到一些数码相机制造商为开发人员提供了相对丰富的SDK(Software Development Kit)资源,便于有关人员利用数码相机进行图像采集和监测方面的开发工作。SDK开发套件一般由头文件(.H)、库文件(.lib)和动态链接库文件(.dll)组成。美国柯达公司是世界相机制造业和诸多影像标准制定的带头兵。本文将以KODAK DC280 SDK为例对SDK及其应用作介绍,以使感兴趣的开发人员可以自编程序将数据相机应用在工程项目中。

1 SDK结构图

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

2 SDK函数分类

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

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

(2)相机控制函数:主要包括_GetStatus()、_GetConfig()、_SetConfig()、_ControlCameraTime()、_ControlCameraID()、_ControlTakePicture()、_ResetCamera()。

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

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

(5)文件传递函数:_GetFileFormCamera()、_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开发工具对SDK及利用它开发相机应用程序进行了简单介绍。其他公司SDK的使用方法基本类似,只是函数名称略有不同,使用方法是一致的。SDK中函数及其参数的详细说明,可以在相机制造商的英文网站上从开发工具一览中找到。

时间: 2025-01-01 03:07:57

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

系统-利用免费空间开发CS客户端程序

问题描述 利用免费空间开发CS客户端程序 最近小弟想做一个CS客户端软件,其实也算不上CS架构,因为大部分运算都在客户端完成,只是这个软件需要基本的用户登陆.注册系统. 但是现在网上服务器好像都不太便宜,小弟想初期先运行"内测"一段时间,如果比较火受欢迎再考虑增加投入,所以目前不想花钱来做测试. 于是我想到了免费空间,现在网上有不少地方可以申请到免费的网站空间,只是小弟只是对C#和VB略知一二,对网页编程就是小白一个. 不知道各位大神能否指点一二,给个方向让小弟摸索学习? 需求概括:利

利用Scala语言开发Spark应用程序

利用Scala语言开发Spark应用程序[转:董的博客 http://www.dongxicheng.org] Spark内核是由Scala语言开发的,因此使用Scala语言开发Spark应用程序是自然而然的事情.如果你对Scala语言还不太熟悉,可以阅读网络教程A Scala Tutorial for Java Programmers或者相关Scala书籍进行学习. 本文将介绍3个Scala Spark编程实例,分别是WordCount.TopK和SparkJoin,分别代表了Spark的三种

在ASP中利用COM组件开发Web应用程序

web|程序|组件开发 如果你是一名Active Server Page (ASP) 开发者,相信你可能经常使用COM对象来创建ASP页面.甚至在你使用中都忽略了他就是COM对象.比如:ADO.只个调用率最高的组件已让你的页面扩展了无限的功能.然而ASP本身是解释型脚本,在功能上不足COM强大.作为拥有快速开发,易用性强,支持COM的VB自然的作为了ASP中开发COM的首要工具.下面的示范和描述中,通过Visual Basic 语言在告诉大家如何写COM及COM对象模型的使用,相信会让你有所收获

利用键盘钩子开发按键发音程序

本文配套源码 一.前言 一日,看见我妈正在用电脑练习打字,频频低头看键盘,我想:要是键盘能发音的话,不就可以方便她养成"盲打"的好习惯吗?光想不做可不行,开始行动(您可千万别急着去 拿工具箱啊^_^)... 按键能发音,其关键就是让程序能够知道当前键盘上是哪个键被按下,并播 放相应的声音,自己的程序当然不在话下,那么其它程序当前按下哪个键如何得知呢?利用键盘钩子便可 以很好地解决. 下载本文的全部源代码 大小:552K 二.挂钩(HOOK)的基本原理 WINDOWS调用挂接的回调函数时

利用Myeclipse快速开发struts应用程序

简介: 文本主要介绍用myeclipse的struts designer(图形化开发环境)开发一个简单的用户登录程序片段. 主要包括2个jsp文件.一个ActionForm.一个Action等其它 userLogin.jsp(用户登录及错误提示页面) userLoginSuccess.jsp(提示登录成功页面) UserLoginForm.java(ActionForm,存放用户提交信息) UserLoginAction.java(Action,简单的处理用户登录事件) 开始吧 首先我们先建立一

应用-听说安卓NDK功能有限,还得用JAVA+SDK开发?

问题描述 听说安卓NDK功能有限,还得用JAVA+SDK开发? C++程序员想学写安卓程序,可是不想在学JAVA了,怕哪个也精通不了.可不可以直接用C++ NDK写安卓应用.我指的是全部JAVA能写的都能写? 解决方案 测重点不一样.java主要是在android中做UI,前台应用,等 ndk是建立一个通道给前台UI访问后台c等,因为游戏u引擎主要是c,所有才出来了ndk来建立这么一个通道. 解决方案二: C++写代码太复杂了,就算你会C++而不会Java,直接用C++写应用也不合算的. 建议你

利用VFW在Delphi中开发视频捕获程序

摘要:许多关于视频的软件(如视频会议.可视电话等)开发都应用于视频捕获技术.微软为软件开发人员提供了一个专门用于视频捕获的VFW SDK,从而为在Windows系统中实现视频捕获提供了标准的接口,并大大降低了程序的开发难度.由于VFW SDK只有VC和VB版,没有Delphi版,因此需要在Delphi中一一声明DLL中的各个函数和变量.文中详细介绍了如何利用VFW在Delphi中开发视频捕获程序的步骤,同时给出了程序实例. 1 引言 视频捕获与实时处理是目前图像处理系统中最关键的技术之一,能否准

利用Eclipse开发Hibernate应用程序

程序 Eclipse是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化的工作环境,Hibernate也是目前牛叉得不得了的框架,至少在EJB 3大行其道之前,它是我们在考虑OR映射时非常好的选择.本文主要介绍如何利用Hibernate Syn插件在Eclipse 3.0.1中快速的开发Hibernate应用程序,提高我们的工作效率.关于Hibernate框架的细节,本文不做过多的讨论,请参考相关资料,推荐<Hibernate in action>一书. 首先需要安装这个插件,

利用ASP技术开发基于WWW的数据库检索程序

程序|数据|数据库  ASP是微软公司推出的用以取代CGI的新技术,是目前公认的建立Windows NT动态站点最好的工具.它与ADO(Active Data Object,一种新的数据访问模型)的充分结合,提供了强大的数据库访问功能,使之成为进行网上数据库管理的重要手段.     一.ASP简介   ASP内含于Internet Information Server(简称IIS3.0)中,扩展名以.asp表示.ASP文件可以用常规的文本编辑器编辑,也可以利用专门的辅助开发工具InterDev进