gpt4 book ai didi

c - 佳能 EDSDK Liveview 的示例 C 代码?

转载 作者:太空狗 更新时间:2023-10-29 17:12:42 27 4
gpt4 key购买 nike

是否有人拥有使用佳能 EDSDK 实现 LiveView 的示例 C 代码的工作片段?在您了解这一点之前,文档中的示例代码看起来很棒:

// 
// Display image
//

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

我已经在 Internet 上搜索过(包括这个论坛),但我还没有找到展示如何执行此操作的 C 代码示例。我希望避免使用 MFC、VB、托管代码或 C#。当然可以在 Vanilla C 中做到这一点,对吧? Vanilla C++ 也很好。

谢谢,弗雷德普

最佳答案

有两个功能他们没有告诉你:
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;
}

关于c - 佳能 EDSDK Liveview 的示例 C 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3217360/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com