我一直试图让这项工作有一段时间了......阅读了很多帖子,但没有一个能解决这个问题.
我使用Canon SDK连接到EOS 550D.我正在运行win7 64bit和Visual Studio c#2010.
我一步一步做的是:
- > 0 Init SDK
err = EDSDK.EdsInitializeSDK();
Run Code Online (Sandbox Code Playgroud)
- > 1获取相机列表
err = EDSDK.EdsGetCameraList(out cameraList);
Run Code Online (Sandbox Code Playgroud)
- > 2让孩子数
err = EDSDK.EdsGetChildCount(cameraList, out cameraCount);
Run Code Online (Sandbox Code Playgroud)
- > 3如果有孩子,请先生孩子
err = EDSDK.EdsGetChildAtIndex(cameraList, 0, out cameraDev);
Run Code Online (Sandbox Code Playgroud)
- > 4开会
err = EDSDK.EdsOpenSession(cameraDev);
Run Code Online (Sandbox Code Playgroud)
- > 5告诉sdk在本地保存图像
IntPtr saveTo = (IntPtr)EDSDK.EdsSaveTo.Host;
err = EDSDK.EdsSetPropertyData(cameraDev, EDSDK.PropID_SaveTo, 0, 4, saveTo);
Run Code Online (Sandbox Code Playgroud)
- > 6设置主机上的可用容量
EDSDK.EdsCapacity capacity = new EDSDK.EdsCapacity();
if (err == EDSDK.EDS_ERR_OK)
{
capacity.NumberOfFreeClusters = 0x7FFFFFFF;
capacity.BytesPerSector = 0x1000;
capacity.Reset …Run Code Online (Sandbox Code Playgroud) 我正在开发一个可以控制佳能相机的 Windows 8 Metro 应用程序。我的应用程序检测到相机并获取设备信息。但是当我打开相机会话“err = EdsOpenSession(cRef)”时,我收到错误“EDS_ERR_DEVICE_NOT_FOUND”。
但是当我调用下面的函数时,我检测到了相机 -
private uint GetFirstCamera()
{
// Variable initilazions
IntPtr cameraList;
uint err;
int count;
// Get list of cameras;
err = EdsGetCameraList(out cameraList);
if (err != EDS_ERR_OK)
{
return err;
}
// Get count of cameras in list
err = EdsGetChildCount(cameraList, out count);
if (err != EDS_ERR_OK)
{
return err;
}
if (count == 0)
{
return EDS_ERR_DEVICE_NOT_FOUND;
}
// Get first camera to public cRef
err = EdsGetChildAtIndex(cameraList, 0, out cRef); …Run Code Online (Sandbox Code Playgroud) 我正在使用EDSDK v2.13和我的EOS 50D相机.我想在我的主人中保存拍摄的照片.我正在使用此代码(c ++):
EdsOpenSession(camera);
EdsInt32 saveTarget = kEdsSaveTo_Both;
err = EdsSetPropertyData( camera, kEdsPropID_SaveTo, 0, 4, &saveTarget );
EdsCapacity newCapacity = {0x7FFFFFFF, 0x1000, 1};
err = EdsSetCapacity(camera, newCapacity);
const char* ch_dest = "C:\\photo\\Img.jpg";
EdsCreateFileStreamEx( ch_dest ,kEdsFileCreateDisposition_CreateNew,kEdsAccess_ReadWrite, 0);
EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0);
EdsCloseSession(camera);
EdsTerminateSDK();
Run Code Online (Sandbox Code Playgroud)
相机快门正常闪光,我在相机的存储卡中找到了照片,但我在电脑上找不到它.
请帮忙.
我是c++和佳能EDSDK的初学者,现在我可以使用sdk控制相机拍照,但我想将图片保存到路径c:\photo,我尝试了一些方法,现在图片没有保存到相机,但我在我的电脑上找不到它们。我应该如何更改我的代码或添加什么?
#include "stdafx.h"
#include "EDSDK.h"
#include "EDSDKErrors.h"
#include "EDSDKTypes.h"
EdsError getFirstCamera(EdsCameraRef *camera);
int _tmain(int argc, _TCHAR* argv[])
{ EdsError err=EDS_ERR_OK;
EdsCameraRef camera=NULL;
bool isSDKloaded=false;
// Initialize SDK
err=EdsInitializeSDK();
if(err==EDS_ERR_OK)
{
isSDKloaded=true;
}
// Get first camera
if(err==EDS_ERR_OK)
{
err=getFirstCamera(&camera);
}
EdsOpenSession(camera);
EdsInt32 saveTarget = kEdsSaveTo_Host;
err = EdsSetPropertyData( camera, kEdsPropID_SaveTo, 0, 4, &saveTarget );
EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0);
EdsCloseSession(camera);
EdsTerminateSDK();
return 0;
}
EdsError getFirstCamera(EdsCameraRef *camera)
{
EdsError err=EDS_ERR_OK;
EdsCameraListRef cameraList=NULL;
EdsUInt32 count=0;
// Get camera list
err = EdsGetCameraList(&cameraList);
// …Run Code Online (Sandbox Code Playgroud) 我有佳能 EOS D600 相机。需要使用C++拍照。文档对我没有帮助。你有示例代码,可以拍照吗?这没有帮助:
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <EDSDK.h>
#include <EDSDKTypes.h>
#include <EDSDKErrors.h>
using namespace std;
EdsError getFirstCamera(EdsCameraRef *camera);
int main(){
EdsError err=EDS_ERR_OK;
EdsCameraRef camera=NULL;
bool isSDKloaded=false;
err=EdsInitializeSDK();
if(err==EDS_ERR_OK) isSDKloaded=true;
if(err==EDS_ERR_OK) err=getFirstCamera(&camera);
EdsOpenSession(camera);
EdsInt32 saveTarget = kEdsSaveTo_Host;
err = EdsSetPropertyData( camera, kEdsPropID_SaveTo, 0, 4, &saveTarget );
EdsCapacity newCapacity = {0x7FFFFFFF, 0x1000, 1};
err = EdsSetCapacity(camera, newCapacity);
const char* ch_dest = "C:\\photo\\Img.jpg";
EdsCreateFileStream( ch_dest ,kEdsFileCreateDisposition_CreateAlways,kEdsAccess_ReadWrite,0);
EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0);
EdsCloseSession(camera);
EdsTerminateSDK();
return 0;
}
EdsError getFirstCamera(EdsCameraRef *camera) …Run Code Online (Sandbox Code Playgroud) 我在这里下载仅源代码的教程。当我通过连接我的佳能 70D 运行它时,出现错误“找不到佳能 Dll”,如下所示。单击确定后,gui 出现了,但gui 上的所有按钮都是灰色的。项目文件夹中有一个文件夹名为“EDSDKLib”。我对使用佳能 SDK 还很陌生,我不明白为什么我会收到错误消息。
那是什么原因呢?我该如何解决?
错误信息:
点击确定后的gui: