1. 程式人生 > >樹莓派 OpenCV3.4.1 安裝血淚史,分享如何規避各種坑

樹莓派 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