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

转载 2004年07月02日 09:09:00
利用数码相机SDK开发图像采集应用程序
文章作者:陈 曙 辛 阳
文章类型:设计应用 文章加入时间:2003年12月16日11:57
文章出处:电子技术应用


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

    关键词:SDK 数码相机 开发

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

1 SDK结构图

DC280 SDK原理框图如图1所示。SDK控制层位于应用程序与指定SDK控制层(对于DS280相机此层为DC280SDK控制层)之间,6a.gif它的主要作用是接收应用程序的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所示。首先是相机初始化即打开相机,然后读取目前相机中拍摄方面的参数设置,根据需要修改某些参数设置,接着拍摄图片,最后关闭相机释放内存。例程如下:
6b.gif
    以下为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中函数及其参数的详细说明,可以在相机制造商的英文网站上从开发工具一览中找到。

数码相机SDK开发

最近用数码相机SDK开发了一个证卡制作程序,使用起来较方便,与身份证软件类似。 这次主要使用了 Conon Powershot 相机。用于对学校学生卡的制作中,特别是在一些学,学生人数较多时,一天可以...
  • yang_141
  • yang_141
  • 2007年10月13日 17:41
  • 1821

大话运动DV产品系统设计 - 基于芯片商提供的SDK API开发之一

大话运动DV - 基于芯片商提供的SDK API开发 1.每个模块都是开N(1,2,3...)个pthread线程,线程之间通过生产者,消费者模型(或者进程间通信机制)实现数据同步/异步。通过数据队列...
  • YXFLINUX
  • YXFLINUX
  • 2016年07月16日 17:03
  • 589

SDK中使用mfc

1.在stdafx.h中所有的头文件之前加入如下头文件:  #include                   //   MFC   core   and   standard   compon...
  • nanjian011
  • nanjian011
  • 2015年06月29日 18:00
  • 684

什么是网络编程,Winsock ,SDK

网络编程:
  • babybird1117
  • babybird1117
  • 2014年10月31日 22:24
  • 496

Android.Camera2 API

  • u010053524
  • u010053524
  • 2016年02月26日 10:54
  • 187

数码相机镜头卡死拆机修理记录

我这个数码相机是柯达Z950(真不幸这家公司已经倒了),前几天侄女带出去玩在拍照时摔地上了,然后镜头卡住无法进出,而由于镜头打不开,也就开不了机了。机子买了有好几年了,是个卡片长焦,平时也很少用,不值...
  • huzgd
  • huzgd
  • 2013年03月23日 19:24
  • 20691

ESP8266 sdk开发入门

ESP8266的SDK开发入门教程 1 引言 据我所知,ESP8266开发方式有三种:AT指令、LUA、SDK开发。AT指令和LUA都是基于特定bin固件的二次开发,具有简单易上手的特点。...
  • qq_26602023
  • qq_26602023
  • 2017年06月13日 11:40
  • 916

如何使用数码相机拍摄夜空

点击这里使用RSS订阅本Blog: 如果你的数码相机有手动档,可以自己调整光圈、快门,并且快门可以在10s以上,那么就可以拍出美丽的星空。下面就说下,如何调整相机的参数来拍摄星星或月亮。...
  • softwave
  • softwave
  • 2008年03月06日 10:00
  • 4987

海康SDK二次开发有感

最近在研究海康抓拍机的SDK,在vs2010上实现人脸抓拍图片功能
  • poor_child
  • poor_child
  • 2014年08月19日 11:11
  • 9970

微视图像(microview)gige相机开发手记(2)

由于在本项目中需要进行行人检测,而直接使用hog+svm行人检测速度太慢,无法检测视频流,在知乎上:http://cache.baiducontent.com/c?m=9d78d513d9d437ad...
  • qq_27582707
  • qq_27582707
  • 2016年06月15日 16:01
  • 938
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用数码相机SDK开发图像采集应用程序
举报原因:
原因补充:

(最多只允许输入30个字)