佳能EDSDK Liveview的C代码样本?[英] Sample C code for Canon EDSDK Liveview?

本文是小编为大家收集整理的关于佳能EDSDK Liveview的C代码样本?的处理方法,想解了佳能EDSDK Liveview的C代码样本?的问题怎么解决?佳能EDSDK Liveview的C代码样本?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

是否有任何人使用实现使用佳能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;
}

本文地址:https://www.itbaoku.cn/post/359318.html