最近,我从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
,但问题仍然存在。
知道如何解决问题吗?
答案 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)