閑的無聊突然想做樹莓派小車,構想是主機端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年前的,本人站在先輩肩膀上,實作此功能,
第一步:安裝live555
1、下載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.gz
2、解壓
tar -zxvf live555-latest.tar.gz
3、編譯安裝
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與libx264
1、準備檔案(建議下載至第一步創建的檔案夾 /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.zip
3、閱讀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 -lcrypto
OK,填上四個坑,問題得以解決,
然后可以試試重新編譯
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,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290374.html
標籤:其他
上一篇:opencv輪廓檢測
