樹莓派 OpenCV3.4.1 安裝血淚史,分享如何規避各種坑
1、更換清華園,否則gtk2.0安裝失敗;血淚的教訓,本來不想換的,折騰了老久還是未解決,直接更換源就可以順利安裝了。
參考連結:https://blog.csdn.net/la9998372/article/details/77886806
2、必須使用16G以上的卡,最好是class10以上,實測8G class6卡安裝到35%就爆滿了,推算安裝完成要4.6G左右。
本例16G class4卡,預設初始系統映象8G,初始佔比就已經64%;
充分使用整個儲存空間,使用命令:sudo raspi-config,7 高階選項,A1 拓展檔案系統,extend到16G,
修改後,初始佔比降低一半到了31%;
跟著下面教程走,最終安裝完成後,空間佔比高達73%,整整用了5G;
class4速度太慢了,sudo make,花時間最長,好幾個小時,中間因為WiFi連結不穩定,ssh還終止過,實在不能忍。
3、強烈用HDMI或VNC直接在樹莓派上裝,千萬不要用ssh,時間太久一旦斷線又得重新編譯過,血與淚的教訓啊。
如果掉線或出錯,刪除release資料夾全部內容,再新建release,設定cmake編譯引數:
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D BUILD_EXAMPLES=ON ..
正式編譯
// 編譯,以管理員身份,否則容易出錯
sudo make
// 安裝
sudo make install
// 更新動態連結庫
sudo ldconfig
技巧:執行cmake後,用ls檢視release資料夾,確認有內容,
//返回資料夾opencv-3.4.1
cd ..
//備份release資料夾,出錯後可直接刪除release,把備份資料夾release1改回release即可避免重新執行cmake,節省時間
sudo cp -r release release1
4、規避掉前面的各種坑,再看 OpenCV3.4.1 安裝參考教程,應該就能順利安裝了:
5、案例測試
上面教程中的案例,一般都能通過,python大法好,但是測試其他C++的案例時就各種報錯,
測試案例:
通過程式碼載入一張圖片,通過opencv把彩色圖片轉換為黑白圖片,並把原圖和轉換後的圖片輸出到螢幕中。
test.cpp
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main (int argc, char **argv)
{
Mat image, image_gray;
if (argc != 2 || !image.data)
{
cout << "No image data\n";
return -1;
}
cvtColor(image, image_gray, CV_RGB2GRAY);
namedWindow("image", CV_WINDOW_AUTOSIZE);
namedWindow("image gray", CV_WINDOW_AUTOSIZE);
imshow("image", image);
imshow("image gray", image_gray);
waitKey(0);
return 0;
}
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)
# 編譯規則 [email protected]代表目標檔案 $< 代表第一個依賴檔案
%.o:%.cpp
g++ -I $(INCLUDE) -o [email protected] -c $<
編譯並執行,載入一張名為lena.jpg圖片,圖片和可執行檔案test應在同一個目錄中,
sudo make
sudo ./test lena.jpg
使用樹莓派系統自帶的編輯工具處理程式碼,複製貼上是要注意,對比清楚,系統可能會自動加 #號或者有缺漏;
預設設定需要做相應修改,否則會出錯:
編寫這個檔案的時候,9行12行前面用的是4個空格符,而不是tab,所以造成了操作符丟失的錯誤。只需把縮排的空格delete掉,然後按tab鍵用tab代替4個空格,問題就可能解決。
另外vim中Tab預設是8格,如果使用vim編輯,需要修改預設配置:
1. 開啟設定檔案:
sudo vim /etc/vim/vimrc
2. 在底部新增以下程式碼:
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
Tab修改為4格,即可正常使用tab代替4個空格。
由於才疏學淺留下的遺憾:
樹莓派一直顯示 no image data,並沒有得到黑白圖片,知道原因的可以在評論區交流下,不勝感激。
案例來源:
樹莓派2+OpenCV環境搭建
https://blog.csdn.net/zx3517288/article/details/51706825