树莓派CSI摄像头实现rtsp流的传输,笔记本使用Python调用Opencv显示 | 您所在的位置:网站首页 › 树莓派读取摄像头数据 › 树莓派CSI摄像头实现rtsp流的传输,笔记本使用Python调用Opencv显示 |
闲的无聊突然想做树莓派小车,构想是主机端python程序可以实时看到树莓派摄像头图像,并可以控制小车方向移动等功能。 主机端使用opencv调用树莓派摄像头,代码差不多这个样子 import cv2 import tkinter as tk from tkinter import * from PIL import Image, ImageTk#图像控件 url = "rtsp://192.168.0.117:9554/webcam" #关键点在这个地方,树莓派通过rtsp传输 cap = cv2.VideoCapture(url)#创建摄像头对象 #界面画布更新图像 def tkImage(): ref,frame=cap.read() frame = cv2.flip(frame, 1) #摄像头翻转 cvimage = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA) pilImage=Image.fromarray(cvimage) pilImage = pilImage.resize((image_width, image_height),Image.ANTIALIAS) tkImage = ImageTk.PhotoImage(image=pilImage) return tkImage top = tk.Tk() top.title('CAR') top.geometry('900x600') image_width = 600 image_height = 500 canvas = Canvas(top,bg = 'white',width = image_width,height = image_height )#绘制画布 Label(top,text = '摄像头视频',font = ("黑体",14),width =15,height = 1).place(x =400,y = 20,anchor = 'nw') canvas.place(x = 150,y = 50) while True: pic = tkImage() canvas.create_image(0,0,anchor = 'nw',image = pic) top.update() top.after(100) cap.release() top.mainloop()本文关键就是哪个url如何得到! ————————————————分割线———————————————— 正文开始声明主要参考文献: 1、https://blog.csdn.net/u013062192/article/details/80210166 2、https://blog.csdn.net/a805995924/article/details/39435261 本文整合多篇参考文献,因为以前教程都是n年前的,本人站在先辈肩膀上,实现此功能。 第一步:安装live5551、下载live555,地址:http://live555.com/liveMedia/public/live555-latest.tar.gz 树莓派可直接命令行(建议新建文件夹,方便后期更改目录,第一段代码是在根目录下建立live555文件夹,若是不想建立,直接第三行就ok) mkdir /live555 cd /live555 wget http://live555.com/liveMedia/public/live555-latest.tar.gz2、解压 tar -zxvf live555-latest.tar.gz3、编译安装 cd live sudo ./genMakefiles linux sudo make sudo make install第一步基本不会出错。 第二步:安装库文件 sudo apt-get install libavcodec-dev sudo apt-get install libswscale-dev sudo apt-get install libavutil-dev 第三步:编译安装ffmpeg与libx2641、准备文件(建议下载至第一步创建的文件夹 /live555 中) ①、ffmpeg源码 GitHub地址:https://github.com/FFmpeg/FFmpeg.git 可在树莓派直接命令行(不能科学上网可在笔记本下载,然后发送到树莓派端) git clone git://github.com/FFmpeg/FFmpeg.git②、x264源码 GitHub地址:https://github.com/mirror/x264.git 可在树莓派直接命令行(不能科学上网可在笔记本下载,然后发送到树莓派端) git clone git://github.com/mirror/x264.git③、yasm源码 下载地址:http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz 2、编译安装 ①、安装yasm tar zxvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make make install yasm --version安装成功标志是可以成功查看版本号。 ②、编译安装x264 先解压压缩文件,我第二段代码重命名了一下,方便后续操作,这地方重不重命名都可以。打开对应文件夹即可。 unzip x264-master.zip mv x264-master x264 cd x264开始编译,正确写法 ./configure \ --prefix=${DEST_LIB_DIR} \ --enable-shared然后(没管理员权限自己获取) make make install③、编译ffmpeg 解压FFmpeg-master.zip(这个地方我重命名了一下,重不重命名都可以) unzip FFmpeg-master.zip mv FFmpeg-master ffmpeg cd ffmpeg打开所在目录下 ./configure --enable-libx264 --enable-gpl --enable-shared --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --enable-pic make make install如果出现以下错误(正常操作不会遇到) ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory解决办法: 则需要修改文件:/etc/ld.so.conf 在文件尾添加一行: /usr/local/lib 然后执行命令: ldconfig 重新运行ffmpeg -encoders | grep x264会发现安装成功 第四步:编译执行工具1、下载源码 Gitee源码地址:https://gitee.com/secho1997/live_camera_linux.git 主机下载源码之后传输至树莓派端,树莓派将源码复制到/opt/vc/src/hello_pi/目录下 2、解压源码(文件名称看实际情况) unzip secho1997-live_camera_linux-master.zip3、阅读hello_pi文件夹下的README 按照提示,build the libs make -C libs/ilclient make -C libs/vgfont完成此步之后进入live_camera_linux文件夹 cd live_camera_linux阅读live_camera_linux文件下的README 按照他说的安装软件开发包(没管理员命令的自己获取) sudo apt-get install libavcodec-dev sudo apt-get install libswscale-dev sudo apt-get install libavutil-dev sudo apt-get install libx264-dev然后尝试编译 cd live_camera_linux sudo make sudo make install sudo ./zk_v4l2_x264_source是不是报错了?正常,哈哈。 错误一: make: *** 没有规则可制作目标“/home/pi/live/liveMedia/libliveMedia.a”,由“zk_v4l2_x264_source” 需求。 停止。此错误查看下文第一个坑 错误二: gcc -L/opt/vc/lib -lEGL -lGLESv2 -ljpeg -shared -o libshapes.so oglinit.o libshapes.o /usr/bin/ld: cannot find -lEGL /usr/bin/ld: cannot find -lGLESv2 collect2: error: ld returned 1 exit status Makefile:35: recipe for target 'library' failed make: *** [library] Error 1此错误查看下文第三个坑 出现其他错误,就按照第二个坑和第四个坑修补,全都补上! 补坑秘籍: 查看live_camera_linux文件夹下的Makefile文件 此处四个坑 第一个:要把第一步安装的live555的正确安装位置写上。 第二个:在INCLUDES后面加上(别忘了上一行末尾加个 \ 反斜杠这个东西,图中是正确示范) -I/opt/vc/src/hello_pi/libs/ilclient第三个:由于年代久远和版本更替,为了避免不同版本发生冲突,一些关键字的名称发生了变化,此处将原来的 -lEGL -lGLESv2改为 -lbrcmEGL -lbrcmGLESv2第四个:LDFLAGS(也就是第三步修改的那一行末尾)后面加上(先空格再加!) -lssl -lcryptoOK,填上四个坑,问题得以解决。 然后可以试试重新编译 sudo make sudo make install sudo ./zk_v4l2_x264_source注意:sudo make install这一步成不成功无所谓,主要是看live_camera_linux 目录下有没有多一个zk_v4l2_x264_source(没有后缀)这个文件,有这个文件就好说。直接 sudo ./zk_v4l2_x264_source运行就行。 成功出现以下内容则成功 [3278] WebcamOndemandMediaSubsession .... calling using url "rtsp://192.168.0.117:9554/webcam"然后成功效果图如下: 如果没成功说明前面步骤不太对,仔细观察。 总结整这玩意花了我一天时间,可愁死我了。因为网上文章都太过久远,目前来说错误很多,我根据前人写的很多经验,写出了本贴,希望本贴可以节约读者时间。 ps:这玩意延迟很大,少说要有三秒,还不如mjpg。mjpg传送门 |
CopyRight 2018-2019 实验室设备网 版权所有 |