Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python访问视频数据_Python_Python Imaging Library_Ethernet - Fatal编程技术网

用Python访问视频数据

用Python访问视频数据,python,python-imaging-library,ethernet,Python,Python Imaging Library,Ethernet,问题 如何获取流式帧的小样本,并使用Python对其进行操作?是否有可用的库可供使用,或者我必须单独编写整个项目的代码 技术规格 操作系统:Linux 连接:CAT-5以太网 摄像机: 导言 我最近问了一个问题,但由于清晰度问题,它被关闭了 我重新发布了更多的细节,如果仍然不清楚,请随意编辑或添加评论 背景 我有一个dlink DCS-930L摄像头,它通过直接连接直接连接到我的Linux计算机。我给它分配了一个静态IP地址,一切都很好 当我打开web浏览器并连接到此静态IP地址(例如登录到19

问题

如何获取流式帧的小样本,并使用Python对其进行操作?是否有可用的库可供使用,或者我必须单独编写整个项目的代码

技术规格

操作系统:Linux

连接:CAT-5以太网

摄像机:

导言

我最近问了一个问题,但由于清晰度问题,它被关闭了

我重新发布了更多的细节,如果仍然不清楚,请随意编辑或添加评论

背景

我有一个dlink DCS-930L摄像头,它通过直接连接直接连接到我的Linux计算机。我给它分配了一个静态IP地址,一切都很好

当我打开web浏览器并连接到此静态IP地址(例如登录到192.168.0.20)时,摄像头实时工作正常

我这样做是为了验证我的相机是否正常工作,以及我是否能够正确建立以太网连接

现在,我需要对通过以太网从摄像机接收到的视频帧进行一些图像处理

我不想再使用web浏览器作为显示手段,而是想使用Python来读取帧

换句话说,假设相机每秒产生30帧,并且每个帧都有一定的大小(例如1920x1080像素)

我想做的就是开始用Python阅读这些框架。我不介意我是否丢失了帧,是否处理得很慢。即使我能在几秒钟内处理一帧,我仍然可以接受

因为视频是图像的集合(在本例中为每秒30个图像),所以我希望能够使用Python读取这些图像,然后能够对这些图像执行任何需要执行的处理

如果我把这些图像保存在计算机上,我会用Python打开这些图像,并开始操作它们。但是,因为在本例中,图像实际上是流式传输的,所以我只想知道如何对它们进行采样(可能每隔几秒钟一个),并使用Python进行一些操作

如果我的问题还不清楚,请告诉我,我会尽可能地澄清

谢谢, --Rudy

根据,摄像头通过java小程序提供视频,因此如果不了解该服务器协议,很难通过python进行访问

但是,它确实有一个选项可以将图像推送到ftp服务器(第34页),因此,如果您在linux机器上安装了vsftpd,您可以告诉相机以可能高达4fps的速度将图像推送到那里。有关于在ubuntu上设置vsftpd的说明,其他版本的linux也会类似(我似乎记得fedora需要稍微少一些设置,但那是多年前的事了)

您需要使用
/etc/vsftpd.conf
中的
write\u enable=YES
行启用上载。处理上传的方法有多种,最简单的方法是使用您的用户帐户登录,然后将图像转储到您的主目录(或您在相机配置中指定的路径)中

然后,您应该能够正常打开图像(使用PIL)


如果不想设置文件服务器,可以尝试直接使用urllib2获取数据,请参阅第页了解如何处理登录。通过抓取数据,你有可能提取视频流,但我认为ftp选项会容易得多

我不太熟悉dlink DCS-30的具体工作原理,但我有一个早期的模型,dlink DCS-20,并且有相同的目标,因此您可以利用我的DCS-20解决方案或其中的一部分,为DCS-30解决同样的问题

关键在于解析内置web浏览器访问提供的HTML

外部模块请求、PIL和BeautifulSoup简化了解决方案

假设您的摄像头IP为192.168.0.20,并且您已经通过webadmin设置了一个用户登录到user1/pw1的摄像头,下面是解决方案的关键:

from StringIO import StringIO

import requests
from PIL import Image
from bs4 import BeautifulSoup

DCS_IP = "192.168.0.20"
userauth = ('user1', 'pw1')

snapurl = "http://" + DCS_IP + "/top.htm"

r = requests.get(snapurl, auth=userauth)
soup = BeautifulSoup(r.content)

# There are several <img> tags in page, so use border=0 attribute of 
# objective <img> to distinguish it
imgtag = soup.find_all("img", attrs={'border':0})
imgsrc = BeautifulSoup(str(imgtag[0])).img['src']
imgurl = "http://" + DCS_IP + "/" + imgsrc

img = requests.get(imgurl, auth=userauth)
i = Image.open(StringIO(img.content))
i.save("snapshot.png")
从StringIO导入StringIO
导入请求
从PIL导入图像
从bs4导入BeautifulSoup
DCS_IP=“192.168.0.20”
userauth=('user1','pw1')
snapurl=“http://”+DCS\u IP+“/top.htm”
r=requests.get(snapurl,auth=userauth)
汤=美汤(r.含量)
#有几个
一旦检索到图像(i),就可以使用PIL进行进一步操作,或者之后使用ffmpeg将生成的图像集缝合到延时视频中


HTH

取决于摄像头支持什么流媒体格式,我想是哪个版本的Python?您希望我们编写代码还是提供库?我不确定计算机上运行的是哪个版本。我得检查一下。但我想做的是一个相当复杂的过程吗?它甚至可以用Python实现吗?如果你能给我指个方向,我会很感激的。例如,这个过程涉及到什么?我需要担心协议的细节吗?例如,过去我使用C编写的API通过以太网接收数据,这非常复杂。但幸运的是,当时API工具处理所有低级UDP协议,我不需要担心这一点。Python的用途是什么?非常感谢您提供的详细说明。我会把它们都试一下,看看它能把我带到哪里去。顺便说一句,出于好奇,我读了一些关于将OpenCV与Python结合使用的文章。(例如)。有没有关于使用OpenCV的想法。看起来有些人尝试过,但在启动和运行时没有取得太大成功。但是你认为这是另一种途径吗?OpenCV看起来比直接使用URLLIB2来获取框架的方式稍微多一些,但是它并没有改变你可能必须理解相机是如何为图像服务的事实(在这种情况下,可能与java applet进行通信)。没有你,我很难知道更多