C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Canon EDSDK Liveview的示例C代码?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有人使用佳能EDSDK实现LiveView的示例C代码?文档中的示例代码看起来很棒,直到您完成此操作:
// 
// Display image 
//

是的,就是这样.它们没有显示如何使用从相机检索到的数据将图像BLT到窗口.他们只是说,“显示图像”.谢谢,佳能.

我已经搜索了互联网(包括这个论坛),但我还没有找到一个C代码示例来说明如何执行此操作.我希望避免使用MFC,VB,托管代码或C#.当然可以在香草C中做到这一点,对吗?香草C也很好.

谢谢,
FredP

解决方法

它们没有告诉您有两个功能
1)EdsGetPointer
2)EdsGetLength

这将分别为您提供指向JPEG流开头和大小的指针.

一旦你有这个使用LibJPEG Turbo解压缩,Libjpeg只是不够快.

解压缩后,可以使用opencv显示图像.

bool CanonCamera::downloadLiveViewImage()
{
    EdsError err = EDS_ERR_OK;
    EdsEvfImageRef image = NULL;
    EdsStreamRef stream = NULL;
    unsigned char* data = NULL;
    unsigned long size = 0;

    err = EdsCreateMemoryStream(0,&stream);

    if (err != EDS_ERR_OK) {
        cout << "Download Live View Image Error in Function EdsCreateMemoryStream: " << err << "\n";
        return false;
    }

    err = EdsCreateEvfImageRef(stream,&imagE);

    if (err != EDS_ERR_OK) {
        cout << "Download Live View Image Error in Function EdsCreateEvfImageRef: " << err << "\n";
        return false;

    }

    err = EdsDownloadEvfImage(cameraRef,imagE);

    if (err != EDS_ERR_OK) {
        cout << "Download Live View Image Error in Function EdsDownloadEvfImage: " << err << "\n";
        return false;
    }

    err = EdsGetPointer(stream,(Edsvoid**)& data);

    if (err != EDS_ERR_OK) {
        cout << "Download Live View Image Error in Function EdsGetPointer: " << err << "\n";
        return false;
    }

    err = EdsGetLength(stream,&sizE);

    if (err != EDS_ERR_OK) {
        cout << "Download Live View Image Error in Function EdsGetLength: " << err << "\n";
        return false;
    }

    // libjpegTurbo(data,sizE);
    // display RGB image in opencv

    if (stream != NULL) {
        EdsRelease(stream);
        stream = NULL;
    }

    if (image != NULL) {            
        EdsRelease(imagE);
        image = NULL;
    }

    data = NULL;
    return true;
}

大佬总结

以上是大佬教程为你收集整理的Canon EDSDK Liveview的示例C代码?全部内容,希望文章能够帮你解决Canon EDSDK Liveview的示例C代码?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。