【问题标题】:How to open IP Camera Url by OpenCV and python?如何通过 OpenCV 和 python 打开 IP Camera Url?
【发布时间】:2013-08-24 04:18:58
【问题描述】:

我已经在 MacX(Lion) 上安装了支持 ffmpeg 的 opencv

import cv2
import cv
import base64
import time
import urllib2
import numpy as np

from cv2 import __version__

print(__version__)
video="http://xxx.223.91.91/mjpg/1/video.mjpg?dummy=param.avi"
vv = cv.CaptureFromFile(video)
cv2.namedWindow("preview")
vc = cv2.VideoCapture("http://xxx.223.91.91/mjpg/1/video.mjpg?dummy=param.mjpg")

但显示警告

2.4.2

警告:无法读取电影文件http://xxx.223.91.91/mjpg/1/video.mjpg?dummy=param.avi

警告:无法读取电影文件http://xxx.223.91.91/mjpg/1/video.mjpg?dummy=param.mjpg

我谷歌了很多代码,但找不到问题的解决方案。 请帮帮我,谢谢。

【问题讨论】:

    标签: python opencv


    【解决方案1】:
    import cv2
    import urllib 
    import numpy as np
    
    stream=urllib.urlopen('http://localhost:8080/frame.mjpg')
    bytes=''
    while True:
        bytes+=stream.read(16384)
        a = bytes.find('\xff\xd8')
        b = bytes.find('\xff\xd9')
        if a!=-1 and b!=-1:
            jpg = bytes[a:b+2]
            bytes= bytes[b+2:]
            i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.CV_LOAD_IMAGE_COLOR)
            cv2.imshow('i',i)
            if cv2.waitKey(1) ==27:
                exit(0)    
    

    【讨论】:

    • 你是说OpenCV不能直接打开MJPG流?但是我在谷歌上搜索代码显示代码是用OpenCV直接打开MJPG流的,但是我实验不行。
    • 根据我的经验,正确配置的 OpenCV 可以直接打开 MJPG 流。但是,似乎有一些配置魔法,我并不完全理解。
    • 是的,opencv可以打开一个mjpg流,满足以下条件。 1)它是用ffmpeg编译的。 2) url 字符串必须以mjpg 结尾 3) 由于在 opencv 调用 ffmpeg 时未设置 max_analyze_duration,因此流不会立即开始。当然,通过强制执行-f mjpeg 并设置较低的max_analyze_duration 来编辑opencv 代码,修复是微不足道的。但是这种方法避免了胖依赖并允许对流进行更好的控制。我有一个解释和一个用法示例@stackoverflow.com/questions/21702477/…
    猜你喜欢
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多