《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 利用數(shù)碼相機(jī)SDK開發(fā)圖像采集應(yīng)用程序

利用數(shù)碼相機(jī)SDK開發(fā)圖像采集應(yīng)用程序

2008-08-29
作者:陳 曙  辛 陽

  摘? 要: 介紹柯達(dá)" title="柯達(dá)">柯達(dá)公司的數(shù)碼相機(jī)開發(fā)套件" title="開發(fā)套件">開發(fā)套件SDK DC280,、SDK的結(jié)構(gòu)及其函數(shù)分類,并提供了一個典型的編程實(shí)例,。

  關(guān)鍵詞: SDK? 數(shù)碼相機(jī)? 開發(fā)

?

  數(shù)碼相機(jī)作為一種目前常見的消費(fèi)類商品,其基本工作原理是利用CCD光耦器件將光信號轉(zhuǎn)變?yōu)殡娦盘?經(jīng)過A/D轉(zhuǎn)換、數(shù)據(jù)壓縮等處理后經(jīng)串口或USB口在PC端應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序控制下將圖片(多為JPEG格式)傳送到PC機(jī)的硬盤中,。目前PC端的應(yīng)用程序都由相機(jī)制造商所提供,。很少有人注意到一些數(shù)碼相機(jī)制造商為開發(fā)人員提供了相對豐富的SDK(Software Development Kit)資源,便于有關(guān)人員利用數(shù)碼相機(jī)進(jìn)行圖像采集和監(jiān)測方面的開發(fā)工作,。SDK開發(fā)套件一般由頭文件(.H)、庫文件(.lib)和動態(tài)鏈接庫文件(.dll)組成,。美國柯達(dá)公司是世界相機(jī)制造業(yè)和諸多影像標(biāo)準(zhǔn)制定的帶頭兵,。本文將以KODAK DC280 SDK為例對SDK及其應(yīng)用作介紹,以使感興趣的開發(fā)人員可以自編程序?qū)?shù)碼相機(jī)應(yīng)用在工程項目中。

1 SDK結(jié)構(gòu)圖

  DC280 SDK原理框圖如圖1所示,。SDK控制層位于應(yīng)用程序與指定SDK控制層(對于DC280相機(jī)此層為DC280SDK控制層)之間,它的主要作用是接收應(yīng)用程序的DC280_OpenCamera()指令,同時將指定相機(jī)SDK控制層調(diào)入內(nèi)存區(qū);接收DC2x0_CloseCamera()指令,同時釋放指定相機(jī)SDK控制層所占內(nèi)存區(qū),。指定相機(jī)SDK層位于SDK控制層下,本層支持所有訪問相機(jī)的函數(shù),并將函數(shù)執(zhí)行結(jié)果狀態(tài)碼(即錯誤代碼)經(jīng)SDK控制層上傳給應(yīng)用程序,。指定相機(jī)控制層的下層為驅(qū)動程序?qū)?。?qū)動程序用于與外部設(shè)備直接打交道,。

?

?

2 SDK函數(shù)分類

  SDK內(nèi)的函數(shù)按照作用類型一般可以分為以下幾類:

  (1)相機(jī)初始化函數(shù):主要包括_CloseCamera()和_OpenCamera()。

  (2)相機(jī)控制函數(shù): 主要包括_GetStatus(),、_GetConfig(),、_SetConfig()、_ControlCameraTime(),、_ControlCa-

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

  (3)圖片管理函數(shù):_TakePicture(),、_DeletePicture()。

  (4)圖片信息獲取函數(shù):_GetCameraPictInfo(),、_Get-AllPictureName(),、_GetNativePicture( )。

  (5)文件傳遞函數(shù)" title="傳遞函數(shù)">傳遞函數(shù):_GetFileFromCamera(),、_SetFileToCamera(),。

  (6)其他類型的函數(shù):包括電池電量數(shù)據(jù)獲取函數(shù)、最后一次操作返回碼獲取函數(shù)等,。

3 SDK用法的一個典型實(shí)例

  下面舉一個拍攝圖片的簡單實(shí)例使讀者大體了解編程的一般模式,其過程如圖2所示。首先是相機(jī)初始化即打開相機(jī),然后讀取目前相機(jī)中拍攝方面的參數(shù)設(shè)置,根據(jù)需要修改某些參數(shù)設(shè)置,接著拍攝圖片,最后關(guān)閉相機(jī)釋放內(nèi)存,。例程如下:

?

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

  #include “F210.h”

  OSErr?????????????????????? ret,;??????

  DC280_Camera??????????????? Camera;

  DC280_ImgProcData?????????? ThumbImgInfo,;

  DC280_TakePictInfo????????? TakePictInfo,;

  DC280_PictInfo????????????? GenericPictInfo;

  DC280_SpecificPictInfo????? SpecificPictInfo,;

  //打開相機(jī)

  DC280_OpenCamera(VersionData,, CameraData);

  //獲取相機(jī)設(shè)置參數(shù)

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

??????????????????????????????????????????????&TakePictInfo),;

  //修改需要變動的參數(shù)

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

  &TakePictInfo),;????????      ????? //拍照

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

  //可以根據(jù)需要加上文件傳遞函數(shù)等

  DC210_CloseCamera(CameraData);????????? //關(guān)閉相機(jī)

  其中DC280_ControlTakePicture的第二個參數(shù)為GetSetFlag,。當(dāng)其為true時表示從相機(jī)中獲取設(shè)置參數(shù);為false時表示將改動過的參數(shù)輸送給相機(jī),。DC280_Camera的數(shù)據(jù)結(jié)構(gòu)如下:

  typedef struct??????? {DC210_PortNum??????? PortNum;

????????????????????????? DC210_BitRate???????? BitRate,;

????????????????????????? DC210_CameraType????? CamType,;

 ??????????????????????? BOOL????????????????? CameraOpenFlag;

??????????????????????????VOIDPTR?????????????? InternalUseOnly,;

  } DC280_Camera ;

  本文通過柯達(dá)公司的DC280 SDK開發(fā)工具" title="開發(fā)工具">開發(fā)工具 對SDK及利用它開發(fā)相機(jī)應(yīng)用程序進(jìn)行了簡單介紹,。其他公司SDK的使用方法基本類似,只是函數(shù)名稱略有不同,使用方法是一致的。SDK中函數(shù)及其參數(shù)的詳細(xì)說明,可以在相機(jī)制造商的英文網(wǎng)站上從開發(fā)工具一覽中找到,。

?

參考文獻(xiàn)

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

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容,、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。