天天看點

樹莓派opencv的編譯使用和驅動官方攝像頭一

目錄

    • 編譯方法
    • 攝像頭驅動

編譯方法

通過代碼載入一張圖檔,用opencv将突破輸出到螢幕中。

建立兩個檔案分别為test.cpp和makefile

touch test.cpp
touch makefile
           

makefile檔案

INCLUDE = $(shell pkg-config --cflags opencv)
LIBS = $(shell pkg-config --libs opencv)
SOURCES = test.cpp
# 目标檔案
OBJECTS = $(SOURCES:.cpp=.o)
# 可執行檔案
TARGET = test
$(TARGET):$(OBJECTS)
    g++ -o $(TARGET) $(OBJECTS) -I $(INCLUDE) $(LIBS)
$(OBJECTS):$(SOURCES)
    g++ -c $(SOURCES)
clean:
    rm $(OBJECTS) $(TARGET)
# 編譯規則 $@代表目标檔案 $< 代表第一個依賴檔案
%.o:%.cpp
    g++ -I $(INCLUDE) -o $@ -c $<

           

makefile中通過pkg-config --cflags opencv 獲得opencv相關頭檔案路徑,通過pkg-config --libs opencv獲得opencv擴充庫。

攝像頭驅動

test.cpp檔案

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main (int argc, char **argv)
{
    Mat image_src, image_gray, image_edge;
    image_src = imread(argv[1], CV_LOAD_IMAGE_COLOR );
    if (argc != 2 || !image_src.data) {
        cout << "No image data\n";
        return -1;
    }
    cvtColor(image_src, image_gray, CV_RGB2GRAY); //将原圖轉為灰階圖
    imshow("image", image_src);
    imshow("edge", image_gray);
    waitKey(500000);
    return 0;
}

           

然後執行make ,會生成一些檔案test 、test.o

#make
           

然後執行指令,就能顯示出來圖檔

#  ./test  1.jpg
           

(二) 解決無法打開官方攝像頭硬體問題

sudo nano /etc/modules
然後Ctrl+x可以顯示是否儲存文檔,再按y是儲存更改,按n為不儲存更改,繼續再按enter鍵可退回到指令視窗
// 進入編輯界面後,在末尾添加輸入
snd-bcm2835
bcm2835-v4l2
           

重新開機樹莓派 ,檢視裝置管理器是否存在video0

cd /dev
ls
           

或者通過下面方法

下載下傳已經修改軟體源

curl http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc | sudo apt-key add -
           
sudo nano /etc/apt/sources.list
           
以下内容添加到/etc/apt/sources.list檔案中:
           
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main
然後
sudo apt-get update
sudo apt-get upgrade
           

安裝UV4L

sudo apt-get install uv4l uv4l-raspicam

開始驅動服務

sudo service uv4l_raspicam restart
           

在服務開啟的時候,uv4l會去解析配置檔案/etc/uv4l/uv4l-raspicam.conf以擷取 驅動選項的預設值。

sudo apt-get install uv4l-server
sudo apt-get install uv4l−uvc 
sudo apt-get install uv4l-xscreen
sudo apt-get install uv4l-mjpegstream
#uv4l參數設定即可
uv4l --driver raspicam --auto-video_nr --width 640 --height 480 --encoding mjpeg(或者h264、jpeg)
           

繼續閱讀