以任何方式将 DroidCam 视频流式传输到 OpenCV Python

Posted

技术标签:

【中文标题】以任何方式将 DroidCam 视频流式传输到 OpenCV Python【英文标题】:Streaming DroidCam video to OpenCV Python in ANYWAY possible 【发布时间】:2016-07-06 06:33:57 【问题描述】:

我目前在我的 android 上安装了 Droid cam 应用程序,它正在被检测到并通过 wifi(Droid Cam 客户端)在 Skype 上进行流式传输。然而,无论我为以下输入什么数字,它都不会流式传输到 OpenCV。

cap=cv2.VideoCapture()

除此之外,我还有一个 IP 地址,那么有什么方法可以实现这一点,以便 OpenCV 可以从我的相机无线读取过程图像? 我知道它甚至没有开始读取相机,因为我已经使用以下代码对其进行了测试,每次运行它都会返回 FALSE。

cap=cv2.Videocapture(0) #Use default cam
i=0
while(i<50):
    ret,frame=cap.read()
    print ret

一直返回 false,表示无法识别相机:L

【问题讨论】:

这个 github 仓库对我很有帮助:github.com/ravirajsinh45/… 具体来说,jupyter example 【参考方案1】:

您必须输入 droidcam 的 IP 地址,然后输入格式。以下方法对我来说完美无缺: cap = cv2.VideoCapture('http://0.0.0.0:4747/mjpegfeed?640x480')

确保您打开客户端并且不要在其他地方访问相机源

【讨论】:

【参考方案2】: 安装 Droid Cam 启用 USB 调试 通过 USB 将相机连接到您的计算机

下面更改IP地址

cap = cv2.VideoCapture('http://192.168.0.21:4747/mjpegfeed')

【讨论】:

【参考方案3】:

DroidCam 有一个 MJPEG 端点,您可以尝试使用,

http://ip:port/mjpegfeed

见:Reading stream from IP camera with cv2.VideoCapture()

【讨论】:

【参考方案4】:

试试 IP Webcam android app

并从http://your-ip:8080/shot.jpg获取帧?

【讨论】:

【参考方案5】:

我只是按照以下说明为我工作。

    安装 Droidcam; 启用 USB 调试 通过 USB 将相机连接到您的计算机 使用代码:

cap = cv2.VideoCapture(0)

【讨论】:

【参考方案6】:
cap=cv2.Videocapture(0)
i=0
while(i<50):
    ret,frame=cap.read() //change car -> cap
    print ret

【讨论】:

【参考方案7】:
i=0
while(i<50):
    #put this statement inside the loop to capture the frame returned by ip webcam or 
    #droidcam in every iteration
    #put image address in the parameter
    cap=cv2.VideoCapture('http://192.168.x.x:4747/shot.jpg?rnd=890215') 
    ret,frame=car.read()
    print(ret)

【讨论】:

【参考方案8】:

这是通过 droidcam 将视频从 android 无线传输到 opencv 的 python 代码

import numpy as np
import cv2

#go to the setting find ip cam username and password if it is not empty use 
#first one
#cap = cv2.VideoCapture('http://username:password@ip:port/video')
cap = cv2.VideoCapture('http://ip:port/video')


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

    #do some stuff
    gray  = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

【讨论】:

【参考方案9】:

在 PC 和移动设备上安装 droidcam 应用,然后编写以下代码:

import cv2

cap =cv2.VideoCapture(1)

while True:
    _, img = cap.read()

    cv2.imshow("img", img)
    cv2.waitKey(1)

【讨论】:

【参考方案10】:

这 answer here 为我工作,用 http://my-ip:8080/shot.jpg 替换 IP Webcam 应用程序的 URL。这是我的代码:

import cv2
import urllib.request
import numpy as np

my_ip = # ip given by ip-webcam

while True:
    req = urllib.request.urlopen('http://'+my_ip+':8080/shot.jpg')
    arr = np.asarray(bytearray(req.read()), dtype=np.uint8)
    img = cv2.imdecode(arr, -1) # 'Load it as it is'

    if cv2.waitKey(1) == 27:
        break
    cv2.imshow('Its Me', img)

cv2.destroyAllWindows()

【讨论】:

【参考方案11】:

其简单的 droidcam 应用程序显示网址;只需将其复制并粘贴到视频捕获中即可。

IP Cam Access:
http://192.168.29.201:4747/video

像这样粘贴网址:

import cv2

cap = cv2.VideoCapture('http://192.168.29.201:4747/video')

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

    cv2.imshow("frame", frame)
    cv2.waitKey(1)

就是这样。 Opencv 应该从你的 droidcam 获取信息。

【讨论】:

注意:droidcam 应用程序应该在您的手机中处于活动状态。

以上是关于以任何方式将 DroidCam 视频流式传输到 OpenCV Python的主要内容,如果未能解决你的问题,请参考以下文章

使用 node 和 ffmpeg 将编程创建的视频流式传输到 youtube

如何以编程方式使用 AWS Media Convert 流式传输视频

将音频和视频从 Android 手机流式传输到 RTMP 服务器的最佳方式

将 pi 的 opencv 视频传输到 ffmpeg 以进行 Youtube 流式传输

iOS - 开发 iPhone 应用程序以将相机视频流式传输到计算机?

将 getUserMedia 流式传输到 Icecast 服务器?