ivemcel 发表于 2018-1-24 13:26:08

小白第一帖~USB摄像头通过MJPEG_streamer接入hass,图像识别

本帖最后由 ivemcel 于 2018-10-10 22:15 编辑

"MJPG-streamer",是用于从webcam摄像头采集图像,把它们以流的形式通过基于ip的网络传输到浏览器如Firehox,chrome,VLC播放器,Windows的移动设备或者其他拥有浏览器的移动设备。它可以利用某些webcams的硬件压缩功能来降低服务器CPU的开销。
它为嵌入式设备和一些常规服务器提供了一个轻量且更少CPU消耗的方案,因为它无需为视频帧压缩浪费大量的计算效率(这件事交给硬件了)。

我是在树莓派接入了Logitech罗技摄像头(免驱动),我也用Raspberry Pi Camera模块测试了下也可以实现网络视频监控,下面介绍下安装过程https://bbs.hassbian.com/forum.php?mod=image&aid=5141&size=300x300&key=89c913d6a42b443b&nocache=yes&type=fixnonehttps://bbs.hassbian.com/forum.php?mod=image&aid=5142&size=300x300&key=70dde96d74287582&nocache=yes&type=fixnone
建议用官方源地址,避免入坑
源就是来源。就是你安装软件时,程序从哪里获取软件包,安装程序在你的机器上,但需要安装的东西却在软件源服务器上。
其实你可以把他称为软件仓库。安装软件时,就是从仓库里面调取数据放在你的机器上。

把摄像头接入树莓派后,运行命令lsusb查看摄像头是否被识别,也可通过命令 ls /dev/vid*查看是否存在video0设备。(经测试罗技C270摄像头可以用)
1.先更新软件源服务器地址
sudo apt-get update
sudo apt-get upgradeAPT:Advanced Package Tool
apt-get是某些linux发行版使用的一个"包管理器".包管理器的作用是从源(Source)服务器那里下载最新的软件包列表,
apt-get upgrade,则是对已经安装的软件包本身进行更新的过程。由于确定要更新的软件包需要对本地安装的版本和列表的版本进行比较,所以要在update以后运行这一条。
(deb是Debian软件包格式的文件扩展名,类似于windows中的软件包exe)
主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
UPDATE: update is used to download package information from all configured sources.UPGRADE:
upgrade is used to install available upgrades of all packages currently installed on the system from the sources configured via sources.list

2.安装依赖库libjpeg
sudo apt-get install libjpeg8-dev
sudo apt-get install imagemagick
sudo apt-get install libv4l-dev

3.下载并解压mjpg-streamer
git clone https://github.com/jacksonliam/mjpg-streamer.git
4.安装cmake并编译
sudo apt-get install cmake
然后切换到mjpg-streamer的路径下分别输入
cd ~/mjpg-streamer-master/mjpg-streamer-experimental
sudo make clean all

5.安装mjpg-streamer
sudo cpmjpg_streamer/usr/local/bin    /*将文件mjpg_streamer复制到/usr/local/bin文件夹中*/
sudo cpoutput_http.soinput_uvc.so/usr/local/lib/
sudo cp-Rwww/usr/local/www

6. 开启mjpg-streamer
LD_LIBRARY_PATH=/usr/local/libmjpg_streamer -i "input_uvc.so" -o "output_http.so -w /usr/local/www"
(打不开多试几次)

参数解释
-i: 输入(待完善)
-o: 输出(待完善)
-d: 获取图像的设备
-r: 分辨率(具体列表可参见八)
-f: 帧率
-y: 如果你的摄像头不支持MJPEG格式, 我们用 ‘-y’ 指定使用YUYV 格式,而不是MJPEG格式。
-p: 视频服务器发布的端口号
-w: web服务目录
-c: 设置查看所需的用户名和密码
安装完成后在cofiguration.yaml配置下程序**** Hidden Message *****

接入摄像头后参考L大 的人脸识别帖子,成功实现人脸识别自动化语音播报,现在在弄图像识别比如识别到继电器后打开继电器等等有兴趣的搞起来啊,还是利用百度的平台。:lol

参考文档:mjpg-streamer:http://blog.csdn.net/czy_1125/article/details/52636699
L大人脸识别:https://bbs.hassbian.com/forum.p ... 8%E8%AF%86%E5%88%AB









发表于 2018-1-24 13:27:36

很好,建议再排排版,加些图片:)

权限先加上!

ivemcel 发表于 2018-1-24 13:45:20

enen 多谢哈哈:D

发表于 2018-1-24 13:49:52

接入hass的配置呢,这些代码最好以代码的形式插入进去。找一找编辑界面,有个插入代码的<>标志。

jyz_0501 发表于 2018-1-24 17:13:49

你这摄像头咋看着像电视上的~~

ivemcel 发表于 2018-1-24 17:30:51

本帖最后由 ivemcel 于 2018-1-24 20:30 编辑

那个是从网上截图的,换了个自己拍的图片。

咸味土豆 发表于 2018-1-24 20:44:03

自己试了好几个网上搜的教程都不行,多谢分享。

咸味土豆 发表于 2018-1-24 21:03:19

本帖最后由 咸味土豆 于 2018-1-26 13:09 编辑

更新,今天又尝试了一下,居然可以了,非常感谢。应该得加一些参数,看输出信息不太对劲。
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: -1
i: Format............: JPEG
i: TV-Norm...........: DEFAULT
UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)
o: www-folder-path......: /usr/local/www/
o: HTTP TCP port........: 8080
o: HTTP Listen Address..: (null)
o: username:password....: disabled
o: commands.............: enabled
---------------------------------------------
报错信息:

MJPG Streamer Version.: 2.0
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: -1
i: Format............: YUYV
i: JPEG Quality......: 80
i: TV-Norm...........: DEFAULT
Unable to set format: 1448695129 res: 640x480
Init v4L2 failed !! exit fatal
i: init_VideoIn failed

默认帧率 80? 尝试加参数又提示我找不到输入插件行,这种需要自己编译的东西折腾起来真要命。

ivemcel 发表于 2018-1-24 22:22:56

设置默认的帧率,分辨率试试

wilsoncan 发表于 2018-1-25 12:19:07

谢谢分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 小白第一帖~USB摄像头通过MJPEG_streamer接入hass,图像识别