gpt4 book ai didi

c++ - 从 AVI 捕获 OpenCV 帧

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:30 26 4
gpt4 key购买 nike

我正在使用 openCV 2.2 进行一个项目。我需要对 AVI 文件的每一帧进行处理,但是当我运行我的代码时,它只抓取文件的第一帧。 CV_CAP_PROP_POS_FRAMES 似乎不起作用。有什么想法为什么不呢?

    CvCapture* capture = cvCaptureFromAVI("test1.avi");

IplImage *img = 0;

if (!cvGrabFrame(capture)) {
printf("Error: Couldn't open the image file.\n");
return 1;
}

int numFrames = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);
int posFrame = 1;
for(int i =0; i <= numFrames; i++){
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, i);
posFrame = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES);

img = cvGrabFrame(capture);
cvNamedWindow("Image:", CV_WINDOW_AUTOSIZE);
cvShowImage("Image:", img);
printf("%i\n",posFrame);

cvWaitKey(0);

cvDestroyWindow("Image:");
}

最佳答案

您为什么不使用 OpenCV 2.3 尝试这种方式?我觉得这样更直接高效,也更清晰:

VideoCapture _videoSource;

if(!_videoSource.open("test1.avi"))
{
exit(1); // Exit if fail
}
_videoSource.set(CV_CAP_PROP_CONVERT_RGB, 1);

Mat frame;
namedWindow("Image");
int posFrame;

while(1)
{
_videoSource >> frame;
posFrame=_videoSource.get(CV_CAP_PROP_POS_FRAMES);
imshow("output", frame);
return 0;
}

这样的事情应该可行。

关于c++ - 从 AVI 捕获 OpenCV 帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569510/

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