目錄
-
- 編譯方法
- 攝像頭驅動
編譯方法
通過代碼載入一張圖檔,用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)