2016-02-15 44 views
0

我有一个Raspberry Pi(2B,运行Raspbian Jessie 02/09)和一个网络摄像头(ID 041e:406c Creative Technology,Ltd Live!Cam Sync [VF0520],兼容V4L)。在Node.js中流式传输摄像头数据

我试图建立一个机器人,我想象中的相机会的工作是这样的:

PI(Node.js的) - >服务器(计算机,Node.js的,运行电子创建窗口为相机图像)。

目标是使用套接字(socket.io)以可用帧速率(10〜20?)将Pi中的数据发送到服务器。

我已经研究过的模块,例如:

  • 节点相机,它没有工作(空白图像),以及用于的WebSockets。
  • 节点的OpenCV(上NPM OpenCV的),它无法编译,而当它没有,没有正确地检测相机(但蟒蛇发现它完全符合OpenCV的)

很多我的导游在互联网上发现要求客户端连接到浏览器,以便能够检索摄像头数据,这不是我想要的。

任何帮助将不胜感激,谢谢!

编辑: 为了澄清,我有我想JPEG(或其它格式)使Node.js socket.io服务器的网络摄像头数据被传递到在一个合理的帧率从Node.js的(V5.6.0 )客户端。

+0

什么_is_你想要什么?您是否想通过手机访问摄像头数据?一个Java应用程序?你的问题有点不确定。尝试更具体。 – jperezov

+0

嗨,我已经编辑了这个问题来澄清一点,谢谢。 – Justin

+0

关于需要将客户端连接到浏览器的指南:您应该关闭这些指南,然后更换浏览器。换句话说,弄清楚如何使摄像头与节点+浏览器一起工作,然后_找出如何使摄像头在没有浏览器的情况下与节点一起工作。 – jperezov

回答

0

如果你正在建造一个机器人,你应该看看ROS(机器人操作系统)。有很多相机都有ROS准备好的驱动程序,它有一个JavaScript界面​​。

您可能想要发送某种数据进行处理。再次,如果这是一个机器人,你应该保持你的代码的结构。一部分为低级控制器,另一部分为高级控制器,外部库为其他代码中的图像处理等。使用ROS使用的发布者/订阅者方法(也是许多人更喜欢的LCM,我确实发现很酷),让您保持更多订单,因为您可以更轻松地共享数据。

此外,数据如何发送对用户而言是透明的。也许不是最有效的方式(也许LCM有 - 或者我不知道 - 更多的表现),但是很容易实现。我强烈建议看看。

也许这个链接可以给你可以做什么的想法:http://wiki.ros.org/image_transport/Tutorials/PublishingImages

注意socket.io要求是实时的。网络开发的实时性意味着机器人技术的完全不同。你应该记住这一点。

0

我已经成功安装了opencv与Node.js并确认它的工作原理。以下是我做的:

  • 安装和编译的OpenCV(3.0.0作品就是我使用它)
  • git clone节点的OpenCV
  • 删除.git文件夹
  • 运行npm installnode-opencv
  • 重命名node-opencvopencv并移动到node_modules
  • cd至Pr oject目录(含包含opencvnode_modules目录)

我从张贴在node-opencv的GitHub上的问题跟踪一个问题的响应这些指令。

如果安装后相机无法打开,这是因为用户无权访问/dev/video。这是我花了几个小时试图弄清楚为什么我无法打开相机后我意识到的。

在大多数发行版中,您只需将自己添加到video组即可访问所有/dev/video*设备。

+0

按照以下步骤操作后,我已能够运行电子。但是,我无法看到视频。我使用VNC访问PI,但不会导致视频出现问题。我检查了'pi'用户是在'video'组中。有任何想法吗? – user1860288

相关问题