QT使用佳能sdk实现拍照并保存到本机

  介绍

本篇文章为大家展示了QT使用佳能sdk实现拍照并保存到本机,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。


通过usb连接佳能单反,通过QT拍的照,并将拍到的图像保存到本机。


1。初始化SDK

EdsInitializeSDK ();

2。获取相机列表对象

 EdsCameraListRef经济学者或官员=零;
  错误=EdsGetCameraList(和经济学者或官员);

3。获取相机列表对象数量

//遍历相机列表对象,获取相机列表对象数量
  EdsUInt32 cameraCount=0;
  错误=EdsGetChildCount(经济学者或官员,及cameraCount);
  如果(错误!=EDS_ERR_OK)
  {
  qDebug () & lt; & lt;“错误——没有得到相机count";
  EdsRelease(经济学者或官员);
  返回;
  }

4。获取单个相机对象实例

 (uint32_t idx=0;idx & lt;cameraCount;idx + +)
  {//获取单个相机对象
  EdsCameraRef凸轮=零;
  错误=EdsGetChildAtIndex(经济学者或官员,idx和凸轮);
  m_camera=凸轮;
  }

之后我们对相机的操作主要就是通过这个。

5。建立相机会话

EdsOpenSession (m_camera);

6。将图片保存到本机

 EdsUInt32 saveTo=kEdsSaveTo_Both;//保存到相机和本机//EdsUInt32 saveTo=kEdsSaveTo_Host;//保存到本机
  错误=EdsSetPropertyData (m_camera kEdsPropID_SaveTo 0, sizeof (saveTo), saveTo); 

7。在本机设置足够大的容量存放图片

 EdsCapacity能力={0 x7fffffff 0 x1000 1};
  错误=EdsSetCapacity (m_camera、容量);

8。注册对象事件的句柄

错误=EdsSetObjectEventHandler (m_camera, kEdsObjectEvent_All, objectEventHandler); 

但相机对象发生改变将触发objectEventHandler回调函数

9。objectEventHandler回调函数

 EdsError EDSCALLBACK主窗口::objectEventHandler (EdsUInt32 inEvent, EdsBaseRef inRef, EdsVoid *它)
  {
  EdsStreamRef流=零;
  EdsDirectoryItemInfo dirItemInfo;
  QString米(“C:/用户/管理员/桌面/?;
  开关(inEvent)
  {//通知对象(如新文件夹或文件)的创建
  案例kEdsObjectEvent_DirItemCreated:
  qDebug () & lt; & lt;“目录项Created";
  打破;//通知相机上有物体要转移到计算机上。
  案例kEdsObjectEvent_DirItemRequestTransfer:
  qDebug () & lt; & lt;“目录项请求Transfer";
  呃=EdsGetDirectoryItemInfo (inRef, dirItemInfo);
  m=m + dirItemInfo.szFileName;//拼接本地图片保存位置//下载图片到本机
  呃=EdsCreateFileStream (m.toStdString () . data (), kEdsFileCreateDisposition_CreateAlways, kEdsAccess_ReadWrite,和流);
  如果(呃!=EDS_ERR_OK)
  {
  qDebug(“创建文件失败stream");
  }
  呃=EdsDownload (inRef dirItemInfo。大小、流);
  如果(呃!=EDS_ERR_OK)
  {
  qDebug(“未能download");
  }
  呃=EdsDownloadComplete (inRef);
  如果(呃!=EDS_ERR_OK)
  {
  qDebug(“未能下载标记为complete");
  }
  EdsRelease(流);
  流=零;
  打破;
  默认值:
  qDebug () & lt; & lt;“未知事件“;
  打破;
  }
  返回EDS_ERR_OK;
  }

10。发送拍照命令

错误=EdsSendCommand (m_camera kEdsCameraCommand_TakePicture 0); 

11。关闭相机会话

EdsCloseSession (m_camera);//关闭相机会话

12。结束SDK

EdsTerminateSDK ();//结束sdk

上述内容就是QT使用佳能sdk实现拍照并保存到本机,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

QT使用佳能sdk实现拍照并保存到本机