Development of image acquisition application using digital camera SDK

Abstract: Introduce the structure and function classification of SDK DC280 and SDK of Kodak's digital camera development kit, and provide a typical programming example.

Digital camera is a common consumer product at present. Its basic working principle is to use CCD optocoupler device to convert optical signal into electrical signal. After A / D conversion, data compression and other processing, it is applied to PC terminal through serial port or USB port. Transfer the pictures (mostly in JPEG format) to the hard disk of the PC under program control. At present, all applications on the PC are provided by the camera manufacturer. Few people have noticed that some digital camera manufacturers provide developers with relatively rich SDK (Software Development Kit) resources to facilitate the use of digital cameras for image acquisition and monitoring development. The SDK development kit generally consists of a header file (.H), a library file (.lib), and a dynamic link library file (.dll). Kodak Corporation of America is the world leader in camera manufacturing and many imaging standards. This article will use the KODAK DC280 SDK as an example to introduce the SDK and its applications, so that interested developers can self-program to apply the data camera in the engineering project.

1 SDK structure diagram

The DC280 SDK block diagram is shown in Figure 1. The SDK control layer is located between the application and the specified SDK control layer (for the DS280 camera this layer is the DC280SDK control layer), Its main function is to receive the DC280_OpenCamera () instruction of the application, and transfer the specified camera SDK control layer into the memory area; receive the DC2x0_CloseCamera () instruction, and at the same time release the memory area occupied by the specified camera SDK control layer. The designated camera SDK layer is located under the SDK control layer. This layer supports all functions for accessing the camera, and uploads the function execution result status code (that is, error code) to the application through the SDK control layer. Specify the lower layer of the camera control layer as the driver layer. Drivers are used to deal directly with external devices.

2 SDK function classification

The functions in the SDK can be generally divided into the following categories according to the role type:

(1) Camera initialization function: mainly includes _CloseCamera () and _OpenCamera ().

(2) Camera control functions: mainly include _GetStatus (), _GetConfig (), _SetConfig (), _ControlCameraTIme (), _ControlCameraID (), _ControlTakePicture (), _ResetCamera ().

(3) Picture management functions: _TakePicture (), _ResetCamera ().

(4) Picture information acquisition functions: _GetCameraPicTInfo (), _GetAllPictureName (), _GetNaTIvePicture ().

(5) File transfer function: _GetFileFormCamera (), _SetFileToCamera.

(6) Other types of functions: including the function of obtaining battery power data, the function of obtaining the return code of the last operation, etc.

3 A typical example of SDK usage

The following is a simple example of taking pictures to make readers generally understand the general mode of programming. The process is shown in Figure 2. The first is to initialize the camera, that is, turn on the camera, then read the current camera parameter settings, modify some parameter settings as needed, then take pictures, and finally close the camera to release the memory. The routine is as follows:

The following is a typical example of SDK usage:

#include "F210.h"

OSErr ret;

DC280_Camera; Camera;

DC280_ImgProcData ThumbImgInfo;

DC280_TakePicTInfo TakePictInfo;

DC280_PictInfo GenericPictInfo;

DC280_SpecificPictInfo SpecificPictInfo; // Turn on the camera

DC280_OpenCamera (VersionData, CameraData); // Get camera setting parameters

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

// Modify the parameters that need to be changed

ret = DC280_ControlTakePicture (& Camera, FALSE, (VOIDPTR & TakePictInfo); // Photograph

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

// The file transfer function can be added as needed

DC210_CloseCamera (CameraData); // Close the camera

The second parameter of DC280_ControlTakePicture is GetSetFlag. When it is true, it means that the setting parameters are obtained from the camera; when it is false, it means that the changed parameters are sent to the camera. The data structure of DC280_Camera is as follows:

typedef struct {DC210_PortNum PortNum;

DC210_BitRate BitRate;

DC210_CameraType CamType;

BOOL CameraOpenFlag;

VOIDPTR InternalUseOnly;

} DC280_Camera;

This article provides a brief introduction to the SDK and the development of camera applications using Kodak's DC280 SDK development tool. The methods of using SDKs of other companies are basically similar, but the function names are slightly different, and the methods of use are the same. Detailed descriptions of the functions and parameters in the SDK can be found in the list of development tools on the camera manufacturer's English website.

Tech Zone supports Amazon (AWS) media services to provide quality assurance for end-to-end video. Imec is about to shock the HD experience brought by the first short-wave infrared (SWIR) band hyperspectral imaging camera 4K ultra-high-definition home theater projector. Shengju Apple TV 4K disassembly report based on unified computing architecture technology video display system design: familiar modular components

Follow WeChat

Interesting and informative information and technical dry goods

Download Audiophile APP

Create your own personal electronic circle

Follow the audiophile class

Lock the latest course activities and technical live broadcast
Collect People collection
share it:
comment
Publish

related suggestion

Self-writing system call debugging application process

For example, if we want to break the point of i = i + 2; in the C function, we first find the corresponding instruction in the disassembly file: 84d4: e2 ...

Published on 2018-04-16 08:46 • 8 times read
Self-writing system call debugging application process
Global Security Report 2018: North America and the retail industry are heavily involved in data breaches ...

The survey revealed that all web applications have at least one security flaw, and the median number of security vulnerabilities in each application is 11. 85 ...

Published on 2018-04-13 14:11 • 140 views
Global Security Report 2018: North America and the retail industry are heavily involved in data breaches ...
The AR app YARD improves workflow in the swimming pool and landscape industry ...

Structure Studios has released a new application to improve workflow in the swimming pool and landscape industry. YARD is one ...

Published on 2018-04-12 15:25 • 22 times read
The AR app YARD improves workflow in the swimming pool and landscape industry ...
An advanced child monitoring application

Although dangerous incidents such as accidents, personal injuries and kidnappings abound, parents can use smartphones and other wearable devices to track the position of their children ...

Published on 2018-03-23 ​​08:51 • 405 views
An advanced child monitoring application
In 2017, Google removed 700,000 malicious programs and opened G ...

Recently, Google announced that it removed 700,000 apps from the Play Store in 2017 because they violated the store ’s related ...

Published on 2018-02-11 13:53 • 284 times read
In 2017, Google removed 700,000 malicious programs and opened G ...
Are there any skilled wince6.0 applications?

Published on 2018-02-06 15:56 • 277 times read
Are there any skilled wince6.0 applications?
QT Application Development Manual -20150918

Published on 2018-02-05 09:41 • 392 times read
QT Application Development Manual -20150918
Custom JDBC framework

JDBC is a Java API for executing SQL statements, which can provide unified access to a variety of relational databases. It consists of a set of Ja ...

Published on 2018-02-02 17:55 • 100 views
Custom JDBC framework
Detailed development of embedded Linux application

Published on 2018-01-24 16:58 • 255 times read
Detailed development of embedded Linux application
Tutorial for using remote control software teamviewer

TeamViewer is an application that can be used for remote control in the background of any firewall and NAT proxy, desktop sharing and file transfer ...

Published on 2017-11-29 17:45 • 946 views
Tutorial for using remote control software teamviewer
ds18b20 application example analysis

The DS18B20 temperature sensor is a 1-wire single-bus device produced by DALLAS, which has the characteristics of simple circuit and small size ...

Published on 2017-11-23 16:08 • 576 times read
ds18b20 application example analysis
How important is an application for a drone?

The UAV itself is just a flying machine, but it will be interesting to combine it with the App. That's why Drone Deplo ...

Published on 2016-11-15 17:04 • 243 times read
How important is an application for a drone?
Linux system engineer preached and taught: Embedded Linux ...

Since many people always ask this question, here is a summary for your reference. It must be explained here that the following steps are for the Linux system ...

Posted at 2012-09-13 11:55 • 12815 views
Linux system engineer preached and taught: Embedded Linux ...
AMD's latest developments in cores, SoCs, APIs ...

Electronics enthusiast news: AMD is steadily advancing its goal: to transform itself into SoCs companies compatible with industry chips. AMD is expected to be ...

Published on 16:52 2012-08-29 • 692 views
AMD's latest developments in cores, SoCs, APIs ...
How to choose an embedded system for your next application

Electronic Tips Network Core Tip: This article explains some common misunderstandings and misunderstandings about embedded platforms and proposes a correctly determined discussion framework, which is clear ...

Published on 2012-08-27 09:13 • 2557 views
How to choose an embedded system for your next application
Application program design of embedded detection system

This article introduces the application design of the embedded detection system, which is a detection device based on USB interface. The task of the application is to put the user on the device ...

Posted on 2012-05-29 11:16 • 459 times read
Application program design of embedded detection system
Intel spends $ 100 million to promote cross-platform application development

Intel Capital (Intel Capital), a subsidiary of Intel Corporation, has announced the establishment of a ...

Published on 2011-11-17 10:10 • 314 views
Intel spends $ 100 million to promote cross-platform application development
Enea's latest smartphone app

The city of Malmo has launched smart phone applications such as Android and iPhone. This app includes what people can find ...

Posted on 2011-05-30 09:12 • 356 times read
Enea's latest smartphone app
Portability of WinCE system application

Since the desktop Windows runs on the X86 platform in most cases, there is no portability problem of different platforms. The following is passed ...

Posted on 2011-03-17 11:10 • 871 views
Portability of WinCE system application
Engineer's worries: how to estimate power consumption while the application is running

Software application developers – and those who use laptops on their living room sofas – how should they estimate their applications ...

Published on 2010-11-23 09:55 • 394 times read
Engineer's worries: how to estimate power consumption while the application is running
var check_allow = "/d/Api/iscantalk.html"; var add_url = '/ d / article / write /'; function CheckLogin () {now_uid = ''; var ElecfansApi_checklogin = '/ webapi / passport / checklogin'; var logout_url = "{: U ('Login / logout')}"; var logout_url = 'http://bbs.elecfans.com/member.php?mod=logging&action=logout&refer=front'; $ .get (ElecfansApi_checklogin, function (data, textStatus) {if (data! = "") {EchoLoginInfo (data); CheckEmailInfo (data); data = $ .parseJSON (data); now_uid = data.uid; / * var login_content = 'write an article
'+ data.username +'
Quit '; * / var login_content =' write an article
'+ data.username +'
Set exit '; $ (' # login_area '). Html (login_content); var win_width = $ (window) .width (); if (win_width> 1000) {$ ("# mine"). MouseDelay (200) .hover (function () {$ ("# mymenu"). show ();}, function () {$ ("# mymenu"). hide ();});}} else {var content = 'Login Registration'; $ ('# login_area'). html (content); $ (". special-login"). click (function (e) {$ .tActivityLogin (); return false;});}});} $ (function () {// comment ------------------------------- var comment = $ ("# comment"); var comment_input = $ ("# comContent"); // Submit comment click event interaction $ ("# comSubmit2"). on ('click', function () {var content = comment_input.text (); // Empty input box comment_input. html (""). focus (); // Submit data to the server $ .ajax ({url: '/plus/arcComment.php', data: {aid: $ ("# webID"). val (), dopost : 'apiPubComment', content: content}, type: 'post', dataType: 'json', success: function (data) {// Data format returned: if (data.status == "successed") {// Build temporary comment DOM var dom = ''; dom + = '
'; dom + =' '; dom + ='
'; dom + ='

'+ data.data.username +' '; dom + ='

'; dom + =' '+ content +' '; dom + =' '; dom + =' just now '; dom + =' '; dom + =' '; // insert a temporary comment to the list $ ("# comment ") .append (dom);} if (data.status ==" failed ") {// alert (data.msg); layer.msg (data.msg);}}}); return false;}); (function () {/ * * Insert single sign-on JS * / var setHost = 'https://passport.elecfans.com'; // Set domain name var script = document.createElement ('script'); script.type = 'text / javascript'; script.src = setHost + '/public/pc/js/t.passport.js'; script.setAttribute ("id", "sso_script"); script.setAttribute ("data-ssoSite", setHost); script.setAttribute ("data-ssoReferer", encodeURIComponent (location.href)); script.setAttribute ("data-ssoSiteid", "11"); var body = document.getElementsByTagName ("body"). item ( 0); body.appendChild (script);}) () / * * It is recommended to modify the style of the article without a picture * * / $ (". Article .thumb"). Each (function () {if ($ (this). find ('img'). attr ('src') == "") {$ (this) .find ('img'). remove (); $ (this) .parent (). css ('padding-left ',' 0px ');}}); / * Baidu share * / window._bd_share_config = {common: {bdText: '', // Custom share content bdDesc: '', // Custom share summary bdUrl: window.location.href, // Custom share URL address bdPic: ''} , share: [{"bdSize": 60, "bdCustomStyle": true}]} with (document) 0 [(getElementsByTagName ('head') [0] || body) .appendChild (createElement ('script')). src = 'http://bdimg.share.baidu.com/static/api/js/share.js?cdnversion=' + ~ (-new Date () / 36e5)]; var add_url = '/ d / article / write / '; // var check_allow = "{: U (' Api / iscantalk ')}"; var check_allow = "/ d / api / iscantalk"; var click_items_length = $ ('. art_click_count '). length; if ( click_items_length> 0) {var id_str = ''; $ ('. art_click_count'). each (function () {id_str + = $ (this) .attr ('data-id') + ',';}) // var url = "{: U ('Api / getclickbyids')}"; var url = "/ d / api / getclickbyids"; var id_data = 'id_str =' + id_str; $ .ajax ({url: url, data: id_data, type: 'post', dataType: 'json', success: function (re) {if (re.list.length> = 1) {var list = re.list; for (var i in list) {var t emp_id = list [i] ['id']; var temp_span = $ (". art_click_count [data-id =" + temp_id + "]") temp_span.html (list [i] ['click']);}} }})} $ ("# comContent"). click (function () {if (now_uid == '') {$ .tActivityLogin (); return false;}}) $ (function () {var follow_wrap = $ ( ".author-collect"); var now_uid = "{$ _super ['uid']}"; var face_src = "{$ _super ['uface']}"; var getFollowNum = $ (". followNum strong"). html (); // Follow $ (window) .on ('click', '.author-collect', function () {if (now_uid == '') {$ .tActivityLogin (); return false;} if ( $ (this) .attr ('id') == 'follow') {$ .post ('/ d / user / follow', {tuid: article_user_id}, function (data) {// Data format returned: if (data.status == "successed") {$ (". followNum strong"). html (++ getFollowNum); follow_wrap.html ('followed'). attr ('id', 'cancelFollow'). css ( 'background', '# 999'); var follow_user = ' '; $ (' # follow_list '). append (follow_user);} if (data.status == "failed") {alert (data.msg);}});} else {// Unfollow if ($ ( this) .attr ('id') == 'cancelFollow') {$ .post ('/ d / user / cancelFollow', {tuid: article_user_id}, function (data) {// Data format returned: if (data .status == "successed") {follow_wrap.html ('Follow'). attr ('id', 'follow'). css ('background', '# f90'); $ (". followNum strong"). html (-getFollowNum); $ ('# follow_list .face'). each (function () {var target_uid = $ (this) .attr ('data-uid'); if (target_uid == now_uid) {$ ( this) .remove ();}})} if (data.status == "failed") {alert (data.msg);}}); return false;}}});});}); / * var myface = "{$ _super ['uid'] | avatar}"; var myname = "{$ _super ['username']}"; var article_id = {$ article ['id']}; var article_user_id = {$ article ['mid']}; // Article author ID $ (function () {<notempty name = "clearnum"> // Reduce the number of reminders var count = parseInt ($ ("# noticeCount"). html ()); count = count-{$ clearnum}; $ ("# noticeCount"). html (count); if ( count

60 Port USB Charger

This 60 -port USB charger is charged at the fastest speed to as many as 60 devices. The table charger has 60 ports. The maximum output of a single USB port is 2.4A, and the output power is as high as 300W. Super intelligence: Each port can charging a current of up to 2.4A, and adaptive smart chip detector can provide the best charging current for connected devices. Multiple protection: The USB charger has rush protection, over -current and overvoltage protection functions, which can safely protect your smart devices. Suitable for multiple devices: charging stations are compatible with 99 % of smart devices, such as iPad iPhone, tablet, Bluetooth headset, fan, DVS, for PSP. It is suitable for various occasions, such as hotels, school dormitories, gym and other places.

60 Port USB Charging

60 Port Usb Charger,Multi-port USB 600W charger,60 Port Usb Smart Charger,High Power Mobile Phone Charger

shenzhen ns-idae technology co.,ltd , https://www.szbestchargers.com