Python+opencv 无法正确读取视频文件(已解决)

52 篇文章 0 订阅
49 篇文章 0 订阅

今天使用python+opencv进行视频的相关操作,出现能正常读取摄像头但是不能正确读取视频文件,经查阅相关资料,最终得以解决。

这个问题很普遍,官方教程的程序下面都提示说请确认ffmpeg或者gstreamer已经正确安装

解决方式1、找到opencv安装路径下的/sources/3rdparty/ffmpeg文件夹,将文件夹下的opencv_ffmpeg.dll(如果你的系统是32位的)或者opencv_ffmpeg_64.dll(如果你的系统是64位的)复制到python的安装路径下,比如D:\python2.7下,并将文件重命名为opencv_ffmpeg2411.dll(2411是opencv版本号,改成你的对应版本)或者opencv_ffmpeg2411_64.dll(同样2411是opencv版本号)

更详细的设置可参考:http://blog.csdn.net/heyijia0327 

注意:如果这样修改后还是无法正常打开视频文件,请查看文件路径中是否使用了“\”,将“\”全部转换成“/”即可,本人弄了大半天,最后发现是这的问题,我对自己也是无语了。在python中使用路径时,最好全用“/”,   "\"经常回报错。


2,虽然你的视频文件是.AVI格式,但可能其编码方式opencv无法打开,可以使用VirtualDub1.9.4这个软件转换格式

file->open video file

Video->Filters->Add->convert format->4:2:0 planar YCbCr(YV12)或者32-bit RGB

详情可参考:http://blog.sina.com.cn/s/blog_5728fc490100qq6v.html



  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Python OpenCV YOLO读取RTMP或RTSP并分析后在网页上实现视频预览,可以按照以下步骤进行: 1. 导入必要的库:使用Python首先需要导入OpenCV和YOLO相关的库,如cv2、numpy等。 2. 设置RTMP或RTSP源:使用OpenCV的VideoCapture函数来设置RTMP或RTSP源,例如`cap = cv2.VideoCapture('rtmp://xx.xx.xxx.xxx/live/stream')`。 3. 加载YOLO模型:使用OpenCV加载YOLO模型及其配置文件和权重文件,例如`net = cv2.dnn.readNetFromDarknet('yolov3.cfg', 'yolov3.weights')`。 4. 分析视频帧:使用OpenCV的while循环来读取视频帧,然后对每一帧进行YOLO目标检测处理,例如: ```python while cap.isOpened(): ret, frame = cap.read() if not ret: break # 对当前帧进行YOLO目标检测处理 ... ``` 5. 显示结果:根据YOLO的检测结果在视频帧上绘制边界框和标签,然后使用OpenCV的imshow函数显示处理后的帧,例如: ```python cv2.imshow('YOLO Result', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break ``` 6. 实现网页预览:将每帧处理后的图像编码成JPEG格式,使用Flask等Web框架将图像显示在网页上,例如: ```python @app.route('/') def video_feed(): return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame') def gen_frames(): while True: success, frame = cap.read() if not success: break # 对当前帧进行YOLO目标检测处理 ... # 将处理后的帧编码成JPEG格式 ret, buffer = cv2.imencode('.jpg', frame) frame = buffer.tobytes() yield (b'--frame\r\n' b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n') ``` 通过上述步骤,可以在网页上实现视频预览,并使用YOLO进行视频帧的目标检测分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值