我刚刚开始使用Python学习OpenCV,第一个教程从使用内置笔记本电脑摄像头或外部摄像头捕获视频开始。碰巧的是,我两个都没有。所以我想,是否有可能使用我的Android智能手机的摄像头,然后使用IP捕获视频进行进一步处理。
我的智能手机: Moto E
操作系统: Windows 7
语言: Python
Android应用: IP网络摄像头
我已经在网上广泛搜索,但无法找到任何工作的解决方案,所以任何人可以指导我如何使用IP网络摄像头从我的智能手机捕获视频。
很抱歉没有张贴代码,因为我只是进入这个领域的趋势,所以我完全没有头绪。
谢谢。
发布于 2017-05-28 06:11:21
使用urllib和numpy将视频流导入到Python OpenCV;)
import urllib
import cv2
import numpy as np
import time
# Replace the URL with your own IPwebcam shot.jpg IP:port
url='http://192.168.2.35:8080/shot.jpg'
while True:
# Use urllib to get the image and convert into a cv2 usable format
imgResp=urllib.urlopen(url)
imgNp=np.array(bytearray(imgResp.read()),dtype=np.uint8)
img=cv2.imdecode(imgNp,-1)
# put the image on screen
cv2.imshow('IPWebcam',img)
#To give the processor some less stress
#time.sleep(0.1)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
发布于 2015-07-17 23:19:32
由于各种原因,这可能比您预期的要难得多。
第一个是带宽。中等大小的原始视频流(640x480像素,8位/通道,每秒30帧)需要200 bits的带宽。虽然USB (2)很容易达到这些速度,但您很难找到可靠的无线连接。
现在你可能在想
为什么我可以在我的手机上观看1080p的网络视频而没有任何问题?
几乎所有通过网络传输的视频都是使用诸如MPEG4、H.264和VP8等专用算法进行压缩的。这些算法极大地减少了传输视频所需的带宽。
太棒了!然后我就可以从我的手机上实时压缩视频并将其流式传输到我的电脑上
还没那么快!这有两个主要的问题。
首先,为了实现视频数据量的急剧减少,视频压缩器(编码器)需要花费大量的处理能力来处理视频。您可能会发现您的手机没有足够的CPU能力(或专用硬件),无法以您的任务可用的分辨率和帧速率编码视频。
如果你设法解决了这个问题,并找到了一个可以完成这项工作的应用程序,那么第二个问题就是,为了获得OpenCV格式的(编码的)视频数据,你需要对其进行解码!您可以找到现成的软件来解码视频文件,但是对于解码实时视频流,您需要编写软件来执行解码(最好使用库或OpenCV itself)。
在这一点上,你会咒骂和后悔你没有花15美元买一个摄像头(但你会在这个过程中学到很多有趣的东西:)
发布于 2020-03-25 15:08:54
你可以简单地使用cv2
的VideoCapture
方法,通过向它传递流url,如IP网络摄像头应用程序所示。以下是示例代码:
注意:如果使用IP网络摄像头应用程序,url的
/video
后缀是必需的。我是通过在浏览器中查看原始的url页面来发现这一点的。
import cv2
url = "http://192.168.43.1:8080" # Your url might be different, check the app
vs = cv2.VideoCapture(url+"/video")
while True:
ret, frame = vs.read()
if not ret:
continue
# Processing of image and other stuff here
cv2.imshow('Frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
https://stackoverflow.com/questions/31478137
复制相似问题