问题描述
是否有任何人使用实现使用佳能EDSDK实时查看样品C code的工作一块?在文档中的示例code看起来不错,直到你到达此位:
//
//显示图像
//
是啊,就是这样.它们没有显示如何将图像BLT使用从相机获取的数据的窗口.他们只是说,"显示的图像".谢谢,佳能
我已经猎杀了互联网(包括本论坛),但我还没有找到一个C code示例演示如何做到这一点.我期待,以避免MFC,VB,管理code或C#.当然,这是可能做到这一点香草C,对不对?香草C ++是罚款为好.
谢谢,
FredP
解决方案
有两个功能,他们不告诉你:结果
1) EdsGetPointer 结果
2) EdsGetLength
这会给你一个指针JPEG视频流分别尺寸的开始.
一旦有了这种使用的libjpeg涡轮来DECOM preSS,的libjpeg 只是不够快
一旦DECOM preSS,您可以使用显示图像 OpenCV的.
布尔CanonCamera :: downloadLiveViewImage()
{
EdsError ERR = EDS_ERR_OK;
EdsEvfImageRef图像= NULL;
EdsStreamRef流= NULL;
无符号字符*数据= NULL;
无符号长大小= 0; ERR = EdsCreateMemoryStream(0,&放大器;流); 如果(ERR!= EDS_ERR_OK){
COUT<< "在功能EdsCreateMemoryStream下载实时显示图像的错误:"<<犯错<< "\\ n";
返回false;
} ERR = EdsCreateEvfImageRef(流和放大器;图片); 如果(ERR!= EDS_ERR_OK){
COUT<< "在功能EdsCreateEvfImageRef下载实时显示图像的错误:"<<犯错<< "\\ n";
返回false; } ERR = EdsDownloadEvfImage(cameraRef,图像); 如果(ERR!= EDS_ERR_OK){
COUT<< "在功能EdsDownloadEvfImage下载实时显示图像的错误:"<<犯错<< "\\ n";
返回false;
} ERR = EdsGetPointer(物流,(EdsVoid **)及数据); 如果(ERR!= EDS_ERR_OK){
COUT<< "在功能EdsGetPointer下载实时显示图像的错误:"<<犯错<< "\\ n";
返回false;
} ERR = EdsGetLength(流和放大器;大小); 如果(ERR!= EDS_ERR_OK){
COUT<< "在功能EdsGetLength下载实时显示图像的错误:"<<犯错<< "\\ n";
返回false;
} // libjpegTurbo(数据,大小);
//在OpenCV中显示RGB图像 如果(流!= NULL){
EdsRelease(流);
流= NULL;
} 如果(形象!= NULL){
EdsRelease(图片);
图像= NULL;
} 数据= NULL;
返回true;
}