以任何方式将 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 流式传输