感谢您的阅读,我一直在努力让这一天工作,我没有接近解决方案。
我正试图让这个object tracker起作用。当我使用来自我的网络摄像头的视频时(使用:python object-tracker-single.py -d 0
,一切都按预期工作。
但是一旦我尝试使用视频文件(我尝试过不同的格式:.mp4
,.mkv
和.avi
。我也尝试使用该文件在存储库中给出的,也没有用。看看是否有File not found
- 错误,我传递了一个无效的路径到函数并且打印出一个错误,当我使用时没有打印其他视频。所以我使用的文件是(/是)有效且没有损坏。
我在this article之后dlib
通过homebrew
安装了OpenCV
并从官方来源编译了CMake
。这是# Create the VideoCapture object
cam = cv2.VideoCapture(source)
# If Camera Device is not opened, exit the program
if not cam.isOpened():
print "Video device or file couldn't be opened"
exit()
print "Press key `p` to pause the video to start tracking"
while True:
# Retrieve an image and Display it.
retval, img = cam.read() #<-- this returns false when trying to read a video
if not retval:
print "Cannot capture frame device"
exit()
吐出的CMakeCache.txt。在我第一次编译之后,我添加了opencv_contrib,认为它可以提供帮助(我也认为我确实需要它),但这并没有解决问题。
这是我遇到问题的代码:
retval
在标记的行中,False
等于image
,None
等于ffmpeg
。
如果我可以以某种方式调试此行为,它本来会帮助我,但我没有找到任何方法这样做。
我发现很多Windows用户都遇到了ffmpeg
支持丢失的问题,但对我来说情况并非如此,因为我在之前的(不是与OpenCV相关的)项目{{1}中使用了CMakeCache.txt
报告已找到ffmpeg
并且编译成功。
我还尝试使用视频文件的完全限定文件名,这会导致Video device or file couldn't be opened
或给定问题。
如果你知道如何彻底解决这个问题,想知道如何解决它或者能为我提供一种正确调试这种行为的方法,我会非常高兴来到这里!
谢谢!
-
系统:MacBook Pro(macOS Sierra 10.12.6
)
OpenCV版本:3.3.0
Dlib版本(不是必须的,但是嘿):19.4.0
编辑2
输出cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-master/modules ../ >> result.txt
:pastebin
答案 0 :(得分:1)
我在使用OpenCV 3.3.0时遇到了同样的问题。在Ubuntu 14.04上。
cv2.VideoCapture失败的原因,似乎是因为OpenCV安装错误。
应遵循正式的安装方式:http://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html
我使用pip安装,显然无法正常工作。
我最终只是拉了一个码头图片: https://hub.docker.com/r/victorhcm/opencv/
完美无缺。
答案 1 :(得分:0)
我现在使用scikit-video和链接的skvideo.io.FFmpegReader()
功能找到了解决方法。通过这个,我能够逐帧阅读我测试的所有视频。
这是替换原始问题中代码的代码:
reader = skvideo.io.FFmpegReader("/Users/timomueller/Desktop/test_video_carcounting.mp4", inputdict=inputparameters, outputdict=outputparameters);
print "Press key `p` to pause the video to start tracking"
for img in reader.nextFrame():
#img contains the frame - the for loop runs until there is
#no frame available anymore
如果您遇到与我相同的问题,我认为scikit-video
是一个很好的解决方法,我会专注于处理我的实际问题,而不是从现在开始修复OpenCV
。
通过pip
安装非常简单。只需sudo pip install sk-video
并等待命令完成。然后你可以import skvideo.io
,一切都应该正常工作!
我使用此解决方法的唯一问题是img
似乎有色,好像它丢失了它的颜色,或者好像有关于色彩空间,像素格式等的错误设置。对我来说这不是至关重要的,所以我会忽略它,并可能在以后工作。 (如果我找到修复程序,我会更新此答案)。对于需要正确颜色的所有人,请查看有关inputdict
和outputdict
(skvideo.io.FFmpegReader(file, inputdict, outputdict)
)的文档。和FFmpeg
的{{3}}一样。应该可以使用outputdict
中的正确像素格式设置来修复有色颜色。
但是,在这种情况下,着色问题可能不会对您产生影响:我希望这会有所帮助。
如果您找到问题的实际解决方案,请务必添加您的答案!