相关疑难解决方法(0)

Python - 提取和保存视频帧

所以我已经按照本教程,但似乎没有做任何事情.什么都没有.它等待几秒钟然后关闭程序.这段代码有什么问题?

import cv2
vidcap = cv2.VideoCapture('Compton.mp4')
success,image = vidcap.read()
count = 0
success = True
while success:
  success,image = vidcap.read()
  cv2.imwrite("frame%d.jpg" % count, image)     # save frame as JPEG file
  if cv2.waitKey(10) == 27:                     # exit if Escape is hit
      break
  count += 1
Run Code Online (Sandbox Code Playgroud)

另外,在评论中它说这会将帧限制为1000?为什么?

编辑:我尝试先做success = True,但没有帮助.它只创建了一个0字节的图像.

python opencv python-2.7

92
推荐指数
12
解决办法
21万
查看次数

在Windows 7上为Python 2.7安装OpenCV

我正拼命地让OpenCV在Windows 7上运行.我下载并安装它,它没有用,我得到了

ImportError: No module named opencv 
Run Code Online (Sandbox Code Playgroud)

当我试图运行其中一个样本时.我谷歌我的问题,只得到无效的随机解决方案.任何人都可以指导我安装它,或者知道我可以在哪里获得编程菜单的清晰安装指南设计.

python opencv

30
推荐指数
3
解决办法
10万
查看次数

无法使用opencv打开视频

做其他事情时,opencv工作正常.它可以打开图像并显示图像.但它无法打开视频.

我用来打开视频的代码如下

import cv2

cap = cv2.VideoCapture("MOV_0006.mp4")

while True:
    ret, frame = cap.read()

    cv2.imshow('video', frame)
    if cv2.waitKey(1) & 0xff == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

但是在执行时,它会输出如下所示的错误消息

[h264 @ 0x1053ba0] AVC: nal size 554779904
[h264 @ 0x1053ba0] AVC: nal size 554779904
[h264 @ 0x1053ba0] no frame!
Run Code Online (Sandbox Code Playgroud)

vlcmplayer可播放该视频,但OpenCV的不能.

我已经安装了x264libx264-142编解码器包.(使用sudo apt-get install)

我的ubuntu版本是14.04 trusty.

我不确定它是否是编解码器问题?

我用WITH_UNICAP=ON或用了重建opencv WITH_UNICAP=OFF,但它根本不会影响问题.错误消息永远不会改变.

python video opencv codec

14
推荐指数
1
解决办法
3万
查看次数

VideoCapture在OpenCV 2.4.2中不起作用

我最近在Ubuntu 12.04中安装了OpenCV 2.4.2.

cap = VideoCapture(0)
Run Code Online (Sandbox Code Playgroud)

工作中.但我无法从某些视频源中获取帧.

cap = VideoCapture("input.avi")
img = cap.read() 
Run Code Online (Sandbox Code Playgroud)

给了我一个零元素的numpy.

我还安装了ffmpeg 0.11,x264的最新快照,v4l-0.8.8(所有都是最新的稳定版本)

cmake -D WITH_QT=ON -D WITH_FFMPEG=ON -D WITH_OPENGL=ON -D WITH_TBB=ON -D BUILD_EXAMPLES=OFF WITH_V4L=ON .. 
make
sudo make install
Run Code Online (Sandbox Code Playgroud)

当我做cmake时,我明白了

- 检测到的GNU GCC版本:46(406)
- 找到OpenEXR:/usr/lib/libIlmImf.so
- 寻找linux/videodev.h
- 寻找linux/videodev.h - 找不到
- 寻找linux/videodev2.h
- 寻找linux/
videodev2.h - 找到- 寻找libavformat/avformat.h
- 寻找libavformat/avformat.h - 找到
- 寻找ffmpeg/avformat.h
- 寻找ffmpeg /avformat.h - 未找到
- 检查模块'tbb'
- 找不到包'tbb'

--   Video I/O:  
--     DC1394 1.x:                  NO  
--     DC1394 2.x:                  YES …
Run Code Online (Sandbox Code Playgroud)

opencv ffmpeg video-capture video-codecs

12
推荐指数
1
解决办法
3万
查看次数

Unix路径:在任何平台上正式使用Python?

Python程序中的所有路径都可以使用".."(对于父目录)和/(用于分隔路径组件),并且仍然可以在平台上运行吗?

一方面,我从未在文档中看到过这样的说法(我可能已经错过了它),os和os.path模块确实提供了以平台无关的方式处理路径的工具(os.pardir,os.path.加入,...),这让我觉得他们在这里是有原因的.

另一方面,您可以在StackOverflow阅读 "../path/to/file"适用于所有平台......

因此,为了便于携带,是否应始终使用os.pardir,os.path.join和朋友,或者Unix路径名是否始终安全(最多可能出现字符编码问题)?或者"几乎总是"安全(即在Windows,OS X和Linux下工作)?

python portability path relative-path

10
推荐指数
2
解决办法
4839
查看次数

Windows中的VideoCapture OpenCV 2.4.2错误

我在Windows XP 32位下使用OpenCV 2.4.2的VideoCapture类时遇到问题.它没有打开任何文件或相机,并修复它是一个痛苦.我正在使用visual studio 2010,但我也在QTcreator中尝试了相同的结果.

测试代码如下:

#include "opencv/cv.h"
#include "opencv/highgui.h"
#include <iostream>
#include <string> 
#include <iomanip> 
#include <sstream> 

using namespace cv;
using namespace std;

int main()
{
    const char* videoPath = "C:/video/";
    string videoName = string(videoPath) + "avi.avi";
    VideoCapture cap(videoName);

    if(!cap.isOpened()) 
    {
        std::cout<<"Fail"<<std::endl;
        return -3;
    }
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

输出始终为"-3".Qt Creator显示警告:打开文件时出错(../../modules/highgui/src/cap_ffmpeg_impl.hpp:361)

我调试了它,问题出现在第一行:

CvCapture* cvCreateFileCapture_FFMPEG_proxy(const char * filename)
{
    CvCapture_FFMPEG_proxy* result = new CvCapture_FFMPEG_proxy;
    if( result->open( filename ))
        return result;
    delete result;
#if defined WIN32 || defined _WIN32
    return cvCreateFileCapture_VFW(filename); …
Run Code Online (Sandbox Code Playgroud)

opencv

6
推荐指数
1
解决办法
2万
查看次数

使用 cv2.VideoCapture() 从 IP 摄像头读取流

参考这个类似的问题How to parse mjpeg http stream from ip camera? 我能够使用requests以下命令从 IP 摄像机读取流:

stream = requests.get('http://<user>:<pass>@<addr>:<port>/videostream.cgi', stream=True)

bytez = ''
while True:
    bytez += stream.raw.read(16384)
    ...
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但想通过使用cv2.VideoCapture()请求来实现。

我尝试了以下方式的变化:

cap = cv2.VideoCapture()
cap.open('http://<user>:<pass>@<addr>:<port>/videostream.cgi?.mjpg')

while(True):
    ret, frame = cap.read()
    ...
Run Code Online (Sandbox Code Playgroud)

但无法得到任何东西,但关于空帧的异常。

如何使用 cv2.VideoCapture() 读取 IP 摄像机流?

python opencv

5
推荐指数
1
解决办法
3万
查看次数

下载 twitch.tv 流的第一帧

使用这个 api,我成功下载了流数据,但我不知道如何解析它。我查看了 RMTP 格式,但似乎不匹配。

from livestreamer import Livestreamer

livestreamer = Livestreamer()

# set to a stream that is actually online
plugin = livestreamer.resolve_url("http://twitch.tv/froggen")
streams = plugin.get_streams()
stream = streams['mobile_High']
fd = stream.open()
data = fd.read()
Run Code Online (Sandbox Code Playgroud)

我已在此处上传了数据示例。

理想情况下,我不必将其解析为视频,我只需要第一个关键帧作为图像。任何帮助将不胜感激!

更新:好的,我让 OpenCV 工作了,它可以抓取我拥有的随机视频文件的第一帧。然而,当我在文件中使用与流数据相同的代码时,它产生了无意义的图像。

python rtmp video-streaming

4
推荐指数
1
解决办法
3265
查看次数

OpenCV VideoWriter with python 给出 5.54kb 文件

我正在尝试使用 OpenCV 在 python 中创建一个 TimeLapse 创建器,并具有以下代码:

import cv2
import os
import string

directory = (r"C:\Users\Josh\Desktop\20130216")
video = cv2.VideoWriter(r"C:\Users\Josh\Desktop\video.avi", cv2.cv.CV_FOURCC('F','M','P', '4'), 15, (1536, 1536), 1)

for filename in os.listdir(directory):
    if filename.endswith(".jpg"):
        video.write(cv2.imread(filename))

cv2.destroyAllWindows()
video.release()
Run Code Online (Sandbox Code Playgroud)

该文件夹中有1,440张图片,而video.avi大小只有5.54kb,并且播放时输出为空。任何人都可以看到我的代码中的任何缺陷,并给我任何帮助吗?

python video opencv

3
推荐指数
1
解决办法
5747
查看次数