OPENCV VIDEOCAPTURE说视频有0帧(C 和Python)
OpenCV VideoCapture says video has 0 frames (C++ and Python)
我正在使用opencv 2.4.9并尝试打开视频。isOpened()
成功运行,但是当我尝试查看视频的帧数时,它将返回0,并且无法访问视频的帧。我拥有的每个视频都会发生这种情况。我可以在另一台机器上使用相同的视频(问题发生在我的Centos 7 VM中,视频在共享文件夹中,主机OS可以在OpenCV中访问它们)。安装了FFMPEG,我可以ffplay
视频,ffmpeg -i
告诉我视频的帧数非零。我的OPENCV成功地与FFMPEG一起编译:
" Video I/O:n"
" DC1394 1.x: NOn"
" DC1394 2.x: YES (ver 2.2.2)n"
" FFMPEG: YESn"
" codec: YES (ver 56.26.100)n"
" format: YES (ver 56.25.101)n"
" util: YES (ver 54.20.100)n"
" swscale: YES (ver 3.1.101)n"
" gentoo-style: YESn"
" GStreamer: n"
" base: YES (ver 0.10.36)n"
" app: YES (ver 0.10.36)n"
" video: YES (ver 0.10.36)n"
" OpenNI: NOn"
" OpenNI PrimeSensor Modules: NOn"
" PvAPI: NOn"
" GigEVisionSDK: NOn"
" UniCap: NOn"
" UniCap ucil: NOn"
" V4L/V4L2: Using libv4l (ver 0.9.5)n"
" XIMEA: NOn"
" Xine: NOn"
"n"
我的代码正确编译,我可以使用OpenCV读取图像。
代码非常基本。对于Python:
import cv2
cap = cv2.VideoCapture('test.mp4')
print cap.isOpened()
print cap.get(cv2.cv.CV_CAP_PROP_FPS)
print cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
>> True
>> 0.0
>> 0
和C :
#include "opencv2/opencv.hpp"
#include <stdio.h>
#include <stdlib.h>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
cv::VideoCapture cap;
cap.open("test.mp4");
if(cap.isOpened())
{
cout >> cap.get(CV_CAP_PROP_FPS) >> endl;
cout >> cap.get(CV_CAP_PROP_FRAME_COUNT) >> endl;
}
return(0);
}
也打印0。
这看起来与我遇到的编解码器问题相似,并在此堆栈溢出文章中进行了描述。简而言之:我使用ffmpeg
转换视频:
ffmpeg -i input.avi -c:v libx264 -vf format=yuv420p output.mp4
相关文章:
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何在c++中使用引用实现类似python的行为
- 从udp接收帧对于人脸识别来说太慢
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 递归列出所有目录中的C++与Python与Ruby的性能
- IPC使用多个管道和分支进程来运行Python程序
- 从python中调用C++函数并获取返回值
- Python 3.7 和 excess_args 的 SWIG 问题
- Python中的for循环与C++有何不同
- 如何在c++中录制具有精确帧时间戳的视频
- 使用Pybind11向Python公开Eigen::张量
- Python str to C++ to Python str
- 如何使用Python从C++中读取谷物序列化数据
- RtlCaptureStackBackTrace未捕获任何帧
- 如何在C++中使用pybind11加载一个pickle python列表
- 将帧从python VideoCapture()传递给c ++
- OPENCV VIDEOCAPTURE说视频有0帧(C 和Python)
- 如何从视频中快速提取帧内(在C ++或Python中)
- 如何将JPEG帧从Java客户端流式传输到Python服务器