OpenCV 2.4.3 VideoCapture无效

时间:2013-03-16 00:40:08

标签: opencv video-capture

最近,我从OpenCV 2.4.3迁移到OpenCV 2.4.1

我与2.4.1版本配合良好的程序现在遇到2.4.3的问题。

问题与无法打开我的视频文件的VideoCapture有关。

我在搜索互联网时遇到了类似的问题,但我找不到合适的解决办法。这是我的示例代码:

VideoCapture video(argv[1]);
while(video.grab())
{
    video.retrieve(imgFrame);
    imshow("Video",ImgFrame);
    waitKey(1);
}

值得一提的是,从网络摄像头设备捕获视频效果很好,但我想从文件中抓取流。

我正在使用QT Creator 5,我使用OpenCV编译了MinGW。我正在使用Windows。

我尝试了几种不同的视频格式,并在使用和不使用OpenCV的情况下重建ffmpeg,但问题仍然存在。

知道如何解决问题吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

VideoCapture video(argv[1]);
int delay = 1000.0/video.get(CV_CAP_PROP_FPS);
while(1)
{
    if ( !video.read(ImgFrame)) break;
    imshow("Video",ImgFrame);
    waitKey(delay);
}

答案 1 :(得分:0)

根据我使用OpenCV的经验,我一直在努力使用IP摄像头,直到我的导师发现如何让他们工作,不要忘记插入你的IP地址,否则它将无法工作!

import cv2
import numpy as np
import urllib.request

# Sets up the webcam and connects to it and initalizes a variable we use for it
stream=urllib.request.urlopen('http://xx.x.x.xx/mjpg/video.mjpg')
bytes=b''

while True:
    # Takes frames from the camera that we can use
    bytes+=stream.read(16384)
    a = bytes.find(b'\xff\xd8')
    b = bytes.find(b'\xff\xd9')
    if a!=-1 and b!=-1:
        jpg = bytes[a:b+2]
        bytes= bytes[b+2:]
        frame = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.IMREAD_COLOR)
        img = frame[0:400, 0:640] # Camera dimensions [0:WIDTH, 0:HEIGHT]

       # Displays the final product
        cv2.imshow('frame',frame)
        cv2.imshow('img',img)

     # Hit esc to kill
        if cv2.waitKey(1) ==27:
            exit(0)