欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

QT使用canon sdk拍照并保存到本機(jī)的方法示例

 更新時間:2020年10月27日 09:39:49   作者:云胡  
這篇文章主要介紹了QT使用canon sdk拍照并保存到本機(jī)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、概述

通過 usb 連接 canon 單反,通過 QT 拍照,并將拍到的圖像保存到本機(jī)。

二、操作步驟

1. 初始化 SDK

EdsInitializeSDK();

2. 獲取相機(jī)列表對象

  EdsCameraListRef cameraList = NULL;
  error = EdsGetCameraList(&cameraList);

3. 獲取相機(jī)列表對象數(shù)量

  // 遍歷相機(jī)列表對象,獲取相機(jī)列表對象數(shù)量
  EdsUInt32 cameraCount = 0;
  error = EdsGetChildCount(cameraList, &cameraCount);
  if (error != EDS_ERR_OK)
  {
    qDebug() << "ERROR - failed to get camera count";
    EdsRelease(cameraList);
    return;
  }

4. 獲取單個相機(jī)對象實例

  for (uint32_t idx = 0; idx < cameraCount; idx++)
  {
    // 獲取單個相機(jī)對象
    EdsCameraRef cam = NULL;
    error = EdsGetChildAtIndex(cameraList, idx, &cam);
    m_camera = cam;
  }

之后我們對相機(jī)的操作主要就是通過這個。

5. 建立相機(jī)會話

EdsOpenSession(m_camera);

6. 將圖片保存到本機(jī)

  EdsUInt32 saveTo = kEdsSaveTo_Both;    // 保存到相機(jī)和本機(jī)
  //EdsUInt32 saveTo = kEdsSaveTo_Host;  // 保存到本機(jī)
  error = EdsSetPropertyData(m_camera, kEdsPropID_SaveTo, 0, sizeof(saveTo), &saveTo);

7. 在本機(jī)設(shè)置足夠大的容量存放圖片

  EdsCapacity capacity = {0x7FFFFFFF, 0x1000, 1};
  error = EdsSetCapacity(m_camera, capacity);

8. 注冊對象事件的句柄

error = EdsSetObjectEventHandler(m_camera, kEdsObjectEvent_All, objectEventHandler, this);

但相機(jī)對象發(fā)生改變將觸發(fā) objectEventHandler 回調(diào)函數(shù)

9. objectEventHandler 回調(diào)函數(shù)

EdsError EDSCALLBACK MainWindow::objectEventHandler(EdsUInt32 inEvent, EdsBaseRef inRef, EdsVoid* inContext)
{
  EdsStreamRef stream = NULL;
  EdsDirectoryItemInfo dirItemInfo;
  QString m("C:/Users/Administrator/Desktop/");
  switch (inEvent)
  {
   // 通知對象(如新文件夾或文件)的創(chuàng)建
   case kEdsObjectEvent_DirItemCreated:
      qDebug() << "Directory Item Created";
      break;
   // 通知相機(jī)上有物體要轉(zhuǎn)移到計算機(jī)上。
   case kEdsObjectEvent_DirItemRequestTransfer:
      qDebug() << "Directory Item Requested Transfer";
      err = EdsGetDirectoryItemInfo(inRef, &dirItemInfo);
      m = m + dirItemInfo.szFileName;  // 拼接本地圖片保存位置
      // 下載圖片到本機(jī)
      err = EdsCreateFileStream(m.toStdString().data(), kEdsFileCreateDisposition_CreateAlways, kEdsAccess_ReadWrite, &stream);
      if (err != EDS_ERR_OK)
      {
       qDebug("failed to create file stream");
      }
      err = EdsDownload(inRef, dirItemInfo.size, stream);
      if (err != EDS_ERR_OK)
      {
       qDebug("failed to download");
      }
      err = EdsDownloadComplete(inRef);
      if (err != EDS_ERR_OK)
      {
        qDebug("failed to mark download as complete");
      }
      EdsRelease(stream);
      stream = NULL;
      break;
    default:
        qDebug() << "未知事件";
        break;
    }
   return EDS_ERR_OK;
}

10. 發(fā)送拍照命令

error = EdsSendCommand(m_camera, kEdsCameraCommand_TakePicture, 0);

11. 關(guān)閉相機(jī)會話

EdsCloseSession(m_camera); // 關(guān)閉相機(jī)會話

12. 結(jié)束 SDK

EdsTerminateSDK(); // 結(jié)束 sdk

三、參考資料

Canon EDSDK Tutorial in C#
EDSDK-cpp
Cinder-EDSDK

到此這篇關(guān)于QT使用canon sdk拍照并保存到本機(jī)的方法示例的文章就介紹到這了,更多相關(guān)QT canon sdk拍照 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Windows平臺下配置VS Code的C++環(huán)境教程

    Windows平臺下配置VS Code的C++環(huán)境教程

    這篇文章主要介紹了Windows平臺下配置VS Code的C++環(huán)境教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C語言實現(xiàn)簡單計算器功能(2)

    C語言實現(xiàn)簡單計算器功能(2)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)簡單計算器功能的第二部分,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 完全掌握C++編程中構(gòu)造函數(shù)使用的超級學(xué)習(xí)教程

    完全掌握C++編程中構(gòu)造函數(shù)使用的超級學(xué)習(xí)教程

    這篇文章主要介紹了C++中的構(gòu)造函數(shù),包括C++11標(biāo)準(zhǔn)中的新特性的介紹,十分推薦!需要的朋友可以參考下
    2016-01-01
  • C++程序自動重啟的實現(xiàn)代碼

    C++程序自動重啟的實現(xiàn)代碼

    自動重啟原理很簡單,用一個進(jìn)程監(jiān)控另一個進(jìn)程,掛了就再啟動一個,細(xì)節(jié)也不算多,主要是正確判斷進(jìn)程狀態(tài)和啟動方式,本文就給大家講講C++程序自動重啟的實現(xiàn)方法,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-04-04
  • C++類型轉(zhuǎn)換的深入總結(jié)

    C++類型轉(zhuǎn)換的深入總結(jié)

    這篇文章主要給大家介紹了關(guān)于C++類型轉(zhuǎn)換的深入總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • typedef_struct與struct之間的區(qū)別

    typedef_struct與struct之間的區(qū)別

    本篇文章主要是對typedef struct與struct之間的區(qū)別進(jìn)行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-12-12
  • C++?STL?中的數(shù)值算法示例講解

    C++?STL?中的數(shù)值算法示例講解

    本片文章講解了C++STL?中的數(shù)值算法,包含iota、accumulate、adjacent_difference、inner_product、partial_sum這些方法的使用,感興趣的朋友來看看吧<BR>
    2022-04-04
  • C語言數(shù)據(jù)結(jié)構(gòu)之算法的時間復(fù)雜度

    C語言數(shù)據(jù)結(jié)構(gòu)之算法的時間復(fù)雜度

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之算法的時間復(fù)雜度,文章基于c語言的相關(guān)資料展開詳細(xì)介紹,具有一定的參價值,需要的小伙伴可以參考一下
    2022-05-05
  • Qt音視頻開發(fā)之視頻文件保存功能的實現(xiàn)

    Qt音視頻開發(fā)之視頻文件保存功能的實現(xiàn)

    和音頻存儲類似,視頻的存儲也對應(yīng)三種格式,視頻最原始的數(shù)據(jù)是yuv(音頻對應(yīng)pcm),視頻壓縮后的數(shù)據(jù)是h264(音頻對應(yīng)aac)。本文將利用Qt實現(xiàn)視頻文件保存功能,感興趣的可以了解一下
    2022-12-12
  • C++ STL中的常用遍歷算法分享

    C++ STL中的常用遍歷算法分享

    這篇文章主要為大家詳細(xì)介紹了C++ STL中兩個常用的遍歷算法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)與借鑒價值,感興趣的小伙伴可以參考一下
    2022-12-12

最新評論