gpt4 book ai didi

c++ - 在 FlyCapture2 C++ API 中使用 embeddedFrameCounter

转载 作者:行者123 更新时间:2023-11-28 07:36:21 25 4
gpt4 key购买 nike

我想使用 Point Grey Research 相机实现帧安全捕获。为此,我想检查是否有任何相机遗漏了任何帧。我为此扩展的包装器类使用 FlyCapture 2 API,所以我想尽可能继续使用它。

PGR FAQ on this question仅指旧的 API 和 IEEE-1394 相机(我使用的是 USB 3.0)。我正在尝试使用 uiSeqNum 之前通过 ImageMetadata 对象及其 embeddedFrameCounter 成员提供的帧计数功能。然而,它似乎总是0。

我想知道我是不是在这个过程中犯了一个愚蠢的错误,或者这是一个错误。在任何情况下,如果您链​​接 OpenCV 和 Flycapture 的必要文件,此代码都应该运行。

#include<iostream>
#include"opencv2\opencv.hpp"
#include"FlyCapture2.h"

int main() {
BusManager busMgr;
PGRGuid guid;
Camera cam;
Image rawImage, convertedimage;

busMgr.GetCameraFromIndex(0, &guid);
cam.Connect(&guid);
cam.SetVideoModeAndFrameRate(VIDEOMODE_640x480RGB,FRAMERATE_30);
cam.StartCapture();

IplImage* src_img;
while ((waitKey(30) > 0) == false) {
cam.RetrieveBuffer(&rawImage);
ImageMetadata metadata = rawImage.GetMetadata();
cout << "framecount: " << metadata.embeddedFrameCounter << endl;

rawImage.Convert(PIXEL_FORMAT_BGR, &convertedimage);
src_img = cvCreateImage(cvSize(rawImage.GetCols(),rawImage.GetRows()),IPL_DEPTH_8U,3);
memcpy(src_img->imageData, convertedimage.GetData(), convertedimage.GetDataSize());

cvShowImage("Test", src_img);
cvReleaseData(src_img)
}
waitKey(0);
}

顺便说一句:在此捕获循环中改进内存管理的技巧值得赞赏。

最佳答案

好的:您必须提前激活帧计数,就像大多数(如果不是全部)其他嵌入图像元数据一样。您可以像这样使用 EmbeddedImageInfo 对象执行此操作(如果您在连接相机的调用之后插入这些行):

EmbeddedImageInfo EmbeddedInfo;
cam.GetEmbeddedImageInfo(&EmbeddedInfo);

if (EmbeddedInfo.frameCounter.available == true) {
EmbeddedInfo.frameCounter.onOff = true;
}
else {
cout << "Framecounter is not available!" << endl;
}

cam.SetEmbeddedImageInfo(&EmbeddedInfo);

样本ExtendedShutterEx基本上这个代码片段更普遍地提供了错误检查和多个摄像头。

关于c++ - 在 FlyCapture2 C++ API 中使用 embeddedFrameCounter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707929/

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