1. 程式人生 > >【OpenCV】為樹莓派(ARM)交叉編譯OpenCV

【OpenCV】為樹莓派(ARM)交叉編譯OpenCV

之前都是直接在樹莓派上從原始碼編譯OpenCV,但是速度太感人,而且也不符合嵌入式開發的真實場景,並不是所有的嵌入式裝置都有樹莓派這麼多的硬體資源的,得益於樹莓派官方提供的交叉編譯工具鏈,我們可以在自己的電腦中為樹莓派交叉編譯OpenCV,所以本著學習的態度,就再重新編譯一遍OpenCV

安裝依賴環境

sudo apt-get update
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake cmake-qt-gui
sudo apt-get install libgtk2.0
-dev sudo apt-get install pkg-config sudo apt-get install python-dev python-numpy sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev

下載原始碼

cd ~
mkdir opencv-build && cd opencv-build && mkdir build && mkdir install
git clone https://github.com/opencv/opencv.git
cd build

生成Makefile

  1. OpenCV需要使用Cmake生成Makefile,但是使用命令列執行cmake命令很繁瑣,因為你需要配置一大堆的路徑,導致命令很長,所以我們使用圖形介面的cmake工具
    Cmake

  2. 開啟Cmake之後,首先設定原始碼目錄和編譯目錄,分別選擇opencv目錄和build目錄
    SelectPath

  3. 點選左下角的Configure,選擇最後一項
    CmakeSetup

  4. 點選Next之後,需要設定目標系統的名稱,交叉編譯器的的路徑,以及目標機的根目錄,根據實際情況設定即可
    CmakeSetup

  5. 點選Finish,配置完成之後會有一片紅色的區域,那些是可以配置的選項
    Configure

  6. 這裡需要把BUILD_JPEGBUILD_PNG

    勾選,然後找到 CMAKE_INSTALL_PREFIX,修改為 ~/opencv-build/install,之後再次點選Configure,如果沒有出錯會變成全白,最後點選Generate即可。

附加配置

此時並不能直接編譯,還需要新增一些選項,進入 ~/opencv-build/build 目錄,使用gedit開啟 CMakeCache 檔案,搜尋 CMAKE_EXE_LINKER_FLAGS ,新增 -lpthread -lrt -ldl ,儲存即可。

將終端定位到build目錄,執行

make -j8

根據你電腦的CPU的核心數修改 j 後面的引數,一般編譯時間在10分鐘左右。

安裝

首先執行

make install

這時所有OpenCV的元件都在 ~/opencv-build/install,你可以通過任何你喜歡的方式放到樹莓派的 /usr/local 下的相應目錄中即可。

OpenCV for Python

這種安裝方式只能讓C/C++使用OpenCV庫,如果你還需要Python,那麼只需要在樹莓派下執行以下命令即可。

sudo apt-get install python-opencv

相關推薦

OpenCV樹莓ARM交叉編譯OpenCV

之前都是直接在樹莓派上從原始碼編譯OpenCV,但是速度太感人,而且也不符合嵌入式開發的真實場景,並不是所有的嵌入式裝置都有樹莓派這麼多的硬體資源的,得益於樹莓派官方提供的交叉編譯工具鏈,我們可以在自己的電腦中為樹莓派交叉編譯OpenCV,所以本著學習的態

POCOPOCO學習總結——交叉編譯

最小功能編譯 編譯選項:–minimal :只構建XML, JSON, 工具 and 網路 1 修改配置檔案 $ vi poco-1.7.8p3-all/build/config/ARM-Linux 13 LINKMODE ?

Redis樹莓Raspberry Pi編譯 redis

在 Raspberry Pi 3B 上編譯 Redis 主機硬體:Raspberry Pi 3B 系統:Ubuntu MATE 16.04 編譯器版本: gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0 Overview

POCOPOCO學習總結——MinGW編譯poco

在window下使用MinGW編譯poco 使用MSYS 下載MSYS 安裝 執行mingw-get-setup.exe,只選擇安裝msys-base(mingw我使用Qt中自帶的) 配置 開啟C:\MinGW\msys\1.0\ms

OpenLayers專案分析 資料解析以GML

前面也提到過,OpenLayers設計是符合標準的,有良好的框架結構和實現機制,非常值得學習。OpenLayers支援的格式比較多,有XML、GML、GeoJSON、GeoRSS、JSON、KML、WFS等。這回主要以GML為例來看OpenLayers 資料的解析過程。   

php面向對象

打電話 成員方法 駝峰命名 bject 內部 自動 正在 自己 div 1. 學習面向對象的目標:  a) 語法的學習:  b) 編程思想的學習:    i. 過程化:    ii. 面向對象:2. 比較(有對象和沒對象的區別)  a) 沒對象:    i. 我餓了 自己

php面向對象

row 操作類 面向對象 ssa getline var pre span 錯誤信息 一、 類型約束:  a) 約束函數可傳入的參數類型二、 類的遍歷  a) Foreach  b) 可以將類當中的所有成員屬性遍歷出來三、 關於操作類與對象的一些函數:  a) 判斷函數  

php面向對象

lamp1 變量 步驟 efi 第一個 面向對象 我們 ati 單例 知識點關鍵詞:FSCICATS一、 f => final:  a) 是一個修飾符,用來修飾類和成員方法  b) 使用final修飾符修飾的類不能被繼承,使用final修飾符修飾的成員方法,不能被重寫

Android自己定義組件系列6——進階實踐3

err ack XML @+ layout apk get ast edi 上一篇《Android自己定義組件系列【5】——進階實踐(2)》繼續對任老師的《可下拉的PinnedHeaderExpandableListView的實現》進行了分析,這一篇計劃中間插一段“知識點

Android自己定義組件系列5——進階實踐2

col fonts tle 適配 pack tom ica void log 上一篇《Android自己定義組件系列【5】——進階實踐(1)》中對任老師的《可下拉的PinnedHeaderExpandableListView的實現》前一部分進行了實現,這一篇我們來看看Ex

Python自動化開發課堂筆記Day06 - Python進階

擴展性 程序 lex 類名 人物 優點 ini 參數 self. 類與對象 面向過程的程序設計:  優點:極大的降低了程序的復雜度  缺點:一套流水線或者流程就是用來解決一個問題,生產汽水的流水線無法生產汽車,即使能,也是得大改,改一個組件,牽一發而動全身面向對象的程序設計

原創淺談webview——驚鴻一瞥

版本 開發 spa 占用 混合 原創 大量 功能性 內存泄漏 眾所周知,APP開發過程中經常會通過webview實現HTML5(H5)的渲染,實現H5和Native的混合開發(Hybrid Development)。Hybrid Development可以加速

luogu_3379 模板最近公共祖先LCA

span oid ont return mes ace print next using #include<bits/stdc++.h>using namespace std;#define N 500010*2struct edge{int v,next;}

Nodejs學習筆記--- 簡介及安裝Node.js開發環境

ack 目錄 javascrip 難度 時間 網站開發 clas jetbrains 常用 目錄 學習資料 簡介 安裝Node.js npm簡介 開發工具 Sublime Node.js開發環境配置 擴展:安裝多版本管理器 學習資料   1.深入淺出Node.j

遺傳算法GA的MATLAB實現

tool view ima baidu ges matlab實現 編程 from 函數調用 essay from:https://wenku.baidu.com/view/ce45bbf44693daef5ef73df3.html 一、MATLAB編程實現GA

樹莓進階之路 (023) - Windows下用串行連接控制樹莓

最新版 一個 問題 conn get 鏡像 under tty 打開 轉載:http://shumeipai.nxez.com/2014/05/04/under-windows-serial-connection-control-raspberry-pi.html 在沒有鍵

P3391 模板文藝平衡樹Splay

spa 標題 -s gets 需要 () 序列 代碼 輸入 題目背景 這是一道經典的Splay模板題——文藝平衡樹。 題目描述 您需要寫一種數據結構(可參考題目標題),來維護一個有序數列,其中需要提供以下操作:翻轉一個區間,例如原有序序列是5 4 3 2 1,翻轉區間是[2

轉載CSS3之Clip裁剪拓展閱讀

很多 fix 以及 flow script stat browser hid 一定的 Clip屬性是大家經常會誤解的一個屬性,這篇文章幫助大家充分的了解和學習clip屬性,用這個屬性制作出更好的效果。 我可以確定Clip屬性有很多同學並不知道,因為這個屬性使用率非常的底,我

51nod1519拆方塊[Codeforces]dp

mes str time get view space return .com sed   題目傳送門:1519 拆方塊   首先,我們可以發現,如果第i堆方塊被消除,只有三種情況:   1、第i-1堆方塊全部被消除;   2、第i+1堆方塊全部被消除;(因為兩側的方塊能夠

bfs奇怪的電梯P1135

site 而且 empty ans 整數 print bsp size col 題目描述 呵呵,有一天我做了一個夢,夢見了一種很奇怪的電梯。大樓的每一層樓都可以停電梯,而且第i層樓(1<=i<=N)上有一個數字Ki(0<=Ki<=N)。電梯只有四個