介绍
本篇文章为大家展示了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实现拍照并保存到本机,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。