新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > 基于數(shù)碼相機SDK的開發(fā)圖像采集設計

        基于數(shù)碼相機SDK的開發(fā)圖像采集設計

        作者: 時間:2014-03-09 來源:網(wǎng)絡 收藏

        摘要:介紹柯達公司的數(shù)碼相機開發(fā)套件 的結構及其函數(shù)分類,并提供了一個典型的編程實例。

        本文引用地址:http://www.104case.com/article/234358.htm

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

        1 SDK結構圖

        SDK原理框圖如圖1所示。SDK控制層位于應用程序與指定SDK控制層(對于DS280相機此層為DC280SDK控制層)之間,

        ?

        ?

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

        2 SDK函數(shù)分類

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

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

        (2)相機控制函數(shù):主要包括_GetStatus()、_GetConfig()、_SetConfig()、_ControlCameraTime()、_ControlCameraID()、_ControlTakePicture()、_ResetCamera()。

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

        (4)圖片信息獲取函數(shù):_GetCameraPictInfo()、_GetAllPictureName()、_GetNativePicture()。

        (5)文件傳遞函數(shù):_GetFileFormCamera()、_SetFileToCamera。

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

        3 SDK用法的一個典型實例

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

        ?

        ?

        以下為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); //獲取相機設置參數(shù)

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

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

        ret=DC280_ControlTakePicture(&Camera,F(xiàn)ALSE,(VOIDPTR&TakePictInfo); //拍照

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

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

        DC210_CloseCamera(CameraData); //關閉相機

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

        typedef struct {DC210_PortNum PortNum;

        DC210_BitRate BitRate;

        DC210_CameraType CamType;

        BOOL CameraOpenFlag;

        VOIDPTR InternalUseOnly;

        }DC280_Camera ;

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

        光耦相關文章:光耦原理




        關鍵詞: DC280 SDK

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 岑巩县| 五峰| 应城市| 滁州市| 工布江达县| 朝阳区| 安丘市| 鄂伦春自治旗| 娱乐| 新安县| 凯里市| 白水县| 沙田区| 南投市| 张家口市| 仪征市| 长岭县| 化德县| 五峰| 普兰县| 虞城县| 海安县| 民勤县| 秦安县| 炎陵县| 保德县| 会宁县| 通城县| 杨浦区| 师宗县| 凤台县| 道孚县| 星座| 东明县| 黎平县| 东丽区| 依安县| 山东省| 武隆县| 三台县| 盈江县|