小白也能看懂!OpenCV 從零開始安裝配置全教程(包含Windows / Ubuntu / 樹莓派)系統詳細操作配置教程

小白也能看懂!OpenCV 從零開始安裝配置全教程(包含Windows / Ubuntu / 樹莓派)系統詳細操作配置教程

摘要

本教程是面向“小白也能懂”的OpenCV安裝與配置全攻略,涵蓋Windows、Ubuntu和樹莓派三大平臺,真正實現“從零開始”快速上手。文章詳細講解了OpenCV下載安裝教程、OpenCV安裝、Ubuntu安裝OpenCV、樹莓派安裝OpenCV等步驟,手把手指導小白用戶進行環境準備、依賴庫安裝、解壓與環境變量配置、CMake編譯、源碼編譯與apt-get安裝等操作。通過本教程,小白也能一步步完成OpenCV安裝配置,為后續圖像處理與計算機視覺項目開發打下堅實基礎。

小白也能看懂!OpenCV 從零開始安裝配置全教程(包含Windows / Ubuntu / 樹莓派)系統詳細操作配置教程


目錄

  1. 前言

  2. 準備工作與基礎知識

    1. 什么是 OpenCV?
    2. 為什么要學習 OpenCV?
    3. 運行環境與系統要求
  3. Windows 下安裝 OpenCV

    1. 環境準備
    2. 下載 OpenCV 安裝包
    3. 解壓與配置環境變量
    4. 配置 Visual Studio/MinGW 編譯環境
    5. 驗證安裝(Hello OpenCV)
  4. Ubuntu 下安裝 OpenCV

    1. 環境準備
    2. 從 apt-get 安裝(推薦快速入門)
    3. 從源碼編譯安裝(適合高級定制)
    4. 驗證安裝(Python 與 C++ 示例)
  5. 樹莓派(Raspberry Pi)下安裝 OpenCV

    1. 準備樹莓派硬件與系統
    2. 使用 apt-get 直接安裝
    3. 從源碼編譯安裝(性能優化)
    4. 驗證安裝與攝像頭測試
  6. 常見問題及故障排查

    1. 環境變量不生效
    2. CMake 找不到依賴
    3. Python 導入失敗
    4. 編譯報錯“缺少 xxx 庫”
  7. 總結與擴展閱讀


前言

本教程專為從未接觸過圖像處理、編譯配置的小白用戶打造。我們將帶你“從零開始”,逐步完成在不同系統(Windows、Ubuntu、樹莓派)上安裝和配置 OpenCV(Open Source Computer Vision Library)的全過程。只要你跟著步驟走,即使對命令行、編譯環境、依賴庫一無所知,也能輕松完成安裝。

  • 目標讀者:零基礎學習者、對圖像處理感興趣的同學、想動手搭建計算機視覺開發環境的初學者。

  • 教程亮點

    1. 詳細步驟圖文結合(文字詳盡說明)。
    2. 包含常見報錯及解決方案。
    3. Windows、Ubuntu、樹莓派三大平臺全覆蓋。
    4. 關鍵詞標注,讓你快速檢索 “opencv下載安裝教程”、“opencv安裝”、“ubuntu安裝opencv”、“樹莓派安裝opencv” 等內容。

準備工作與基礎知識

什么是 OpenCV?

OpenCV(Open Source Computer Vision Library)是一個開源的、跨平臺的計算機視覺與機器學習軟件庫。它提供了上千個算法和函數,涵蓋以下主要方向:

  • 圖像處理:圖像讀取、顯示、保存、濾波、幾何變換、閾值分割、形態學操作等。
  • 特征檢測與描述:如邊緣檢測(Canny)、角點檢測(Harris、Shi-Tomasi)、ORB、SIFT、SURF 等。
  • 目標識別與跟蹤:人臉檢測與識別(Haar 特征、DNN)、物體跟蹤(KCF、MOSSE、CSRT 等)。
  • 機器學習:支持 SVM、決策樹、隨機森林、神經網絡等常見模型。
  • 深度學習支持:可加載預訓練的 Caffe、TensorFlow、Torch、Darknet 等模型進行推理。
  • 三維重建與增強現實:立體匹配、相機標定等模塊支持三維重建和 AR 應用。

OpenCV 社區非常活躍,文檔齊全、示例豐富。對于計算機視覺入門和項目開發都是非常理想的選擇。

為什么要學習 OpenCV?

  1. 功能強大且免費開源:幾乎涵蓋所有常見圖像處理與計算機視覺需求。
  2. 跨平臺支持:Windows、Linux(Ubuntu)、macOS、Android、iOS、樹莓派 等。
  3. 語言接口多樣:C++(官方核心實現)、Python、Java、MATLAB 等接口,初學者可先用 Python 體驗。
  4. 社區活躍,資料豐富:Stack Overflow、GitHub Issue、各種技術博客、官方文檔、書籍等一應俱全。
  5. 工業與學術通用:無論是學術論文驗證,還是工業項目快速落地,OpenCV 都是首選。

運行環境與系統要求

由于本教程覆蓋 Windows、Ubuntu、樹莓派 3 個系統,下面分別說明各自的最小要求,供小白用戶簡單確認。

平臺最低要求(推薦)
WindowsWindows 10(64 位),4 GB 內存以上,至少 10 GB 硬盤空間
UbuntuUbuntu 18.04/20.04/22.04(64 位),4 GB 內存以上,至少 10 GB 硬盤
樹莓派Raspberry Pi 4(推薦 4GB or 8GB 內存),運行 Raspberry Pi OS(64 位),SD 卡 16GB 以上
  • 網絡連接:下載源碼或依賴時需要聯網,建議有穩定的網絡。

  • 開發環境

    • Windows:建議安裝 Visual Studio Community(2019/2022)或配置 MinGW。
    • Ubuntu:需要安裝 gcc/g++、make、CMake 等常見開發工具。
    • 樹莓派:建議使用自帶的終端環境,可直接 sudo apt-get 安裝依賴。

后續部分會詳細說明各自的前置準備和依賴安裝。


Windows 下安裝 OpenCV

在 Windows 系統上安裝 OpenCV 最簡單的方式就是下載官方提供的預編譯安裝包,然后配置系統環境變量和開發工具鏈(Visual Studio / MinGW)。本節將以 Visual Studio 2022 為例,手把手教你完成整個過程。

一、環境準備

  1. 操作系統:Windows 10 或更高,64 位(Win7/8 也可,但推薦 Win10 以上)。

  2. Visual Studio Community 2022(免費版即可)

    • 網站下載地址(僅供參考,具體版本以微軟官網最新版本為準):

      https://visualstudio.microsoft.com/zh-hans/vs/community/

    • 在安裝時,勾選“使用 C++ 的桌面開發”工作負載,確保安裝:

      • MSVC v143 - VS 2022 C++ x64/x86 build tools
      • CMake 工具
      • Windows 10 SDK
  3. Python(可選,若想用 Python 接口)

    • Python 3.7 及以上版本均可,推薦 3.8/3.9。
    • Windows 上安裝時,必須勾選“Add Python to PATH”。
  4. 管理員權限:建議使用管理員身份運行安裝程序與配置命令行,否則容易出現權限不足的問題。

二、下載 OpenCV 安裝包

  1. 打開 OpenCV 官方 GitHub Release 頁面:

    https://github.com/opencv/opencv/releases

  2. 找到最新的穩定版本(如 4.8.0、4.7.0 等),對應 Windows 的預編譯文件一般為 opencv-{version}-vc{msvc_version}.zip 或者 opencv-{version}-vc{msvc_version}-opencv_contrib.zip

    • 推薦下載opencv-{version}-vc{msvc_version}.zip(此包已包含主模塊,且自帶 VS 預編譯二進制)。
    • 如果需要 contrib 模塊(額外的算子、samples 等),可以下載 opencv_contrib 版本,但體積更大。
  3. 將下載好的壓縮包放到一個容易找到的位置(如 D:\C:\Users\你的用戶名\Downloads\)。

三、解壓與配置環境變量

  1. 解壓目錄

    • 右鍵點擊下載的 opencv-*.zip,選擇 “解壓到 opencv-xxx\” (推薦路徑:C:\opencv\)。

    • 解壓后,你會看到:

      C:\opencv\├── build\│    ├── x64\│    │    ├── vc15\│    │    │    ├── bin\│    │    │    ├── lib\│    │    │    └── etc...│    └── ...├── samples\├── sources\└── ...
      
  2. 配置系統環境變量

    • 右鍵 “此電腦” → “屬性” → “高級系統設置” → “環境變量”。

    • 在 “系統變量” 區域,找到 Path,選擇后點擊 “編輯”。

    • 點擊 “新建”,添加下面兩項(根據你的解壓路徑修改):

      C:\opencv\build\x64\vc15\bin
      C:\opencv\build\bin\Release
      

      說明

      • vc15 表示 MSVC 15/.NET 2017 或更高版本,如果你的版本不一樣,按實際目錄填寫。
      • 添加后,打開新的命令行(CMD / PowerShell),輸入 opencv_version 無報錯即生效。

四、配置 Visual Studio 編譯環境

以下操作將演示如何在 Visual Studio 2022 中創建一個簡單的 C++ 項目,并鏈接 OpenCV 庫。

  1. 啟動 Visual Studio 2022

    • 點擊 “創建新項目” → 選擇 “空項目(Empty Project)” → 點擊 “下一步”。
    • 項目名稱取為 HelloOpenCV,選擇合適路徑,如 D:\Projects\HelloOpenCV → 點擊 “創建”。
  2. 配置附加包含目錄

    • 右擊解決方案資源管理器中的項目 → “屬性” → 左側選擇 “配置屬性”→“C/C++”→“常規”→“附加包含目錄”。

    • 點擊右側的 “編輯”,添加:

      C:\opencv\build\include
      

      說明:這樣編譯器才能找到 OpenCV 的頭文件(.hpp.h 等)。

  3. 配置附加庫目錄

    • 同樣在項目屬性中,選擇 “配置屬性”→“鏈接器”→“常規”→“附加庫目錄”,添加:

      C:\opencv\build\x64\vc15\lib
      

      該目錄下包含 opencv_world480.lib(或 opencv_world470.lib,視版本而定)等庫文件。

  4. 添加依賴庫

    • 項目屬性 → “配置屬性” → “鏈接器” → “輸入” → “附加依賴項”,點擊 “編輯”,將需要的 .lib 文件添加進去,例如:

      opencv_world480.lib
      

      如果你下載的是 contrib 版本,可能需要添加其它模塊的 lib,但 opencv_worldxxx.lib 已經包含所有模塊,最簡單。

  5. 設置運行時 DLL

    • 由于編譯時會鏈接動態庫(.dll),運行 exe 前需要確保 C:\opencv\build\x64\vc15\bin 已加入系統 PATH(已在上一步完成)。
    • 若未配置環境變量,可將 *.dll 文件復制到可執行文件所在目錄。

五、驗證安裝(Hello OpenCV)

  1. 添加源文件

    • 在項目中右鍵 “源文件” → “添加” → “新建項” → 選擇 “C++ 文件”,命名為 main.cpp
  2. 輸入示例代碼

    #include <opencv2/opencv.hpp>
    #include <iostream>int main() {// 創建一張 300x300 的黑色圖像cv::Mat image = cv::Mat::zeros(300, 300, CV_8UC3);// 在圖像中心畫一個藍色圓圈(BGR )cv::circle(image, cv::Point(150, 150), 100, cv::Scalar(255, 0, 0), -1);// 顯示窗口cv::imshow("Hello OpenCV", image);// 等待按鍵cv::waitKey(0);return 0;
    }
    
  3. 編譯與運行

    • 按下 F5 或點擊 “本地 Windows 調試器” 運行項目。
    • 如果一切正常,將彈出一個名為 “Hello OpenCV” 的窗口,顯示一個藍色填充圓圈。
    • 若窗口正常出現且無報錯,則 Windows 平臺上的 OpenCV 安裝配置成功。

Ubuntu 下安裝 OpenCV

在 Ubuntu 下安裝 OpenCV 常見兩種方式:通過 apt-get 直接安裝(快速)、或者從源碼編譯安裝(自由配置、性能更優)。本節將分別介紹二者,并為初學者標注重點。

一、環境準備

  1. 操作系統:Ubuntu 18.04/20.04/22.04 LTS(64 位)。

  2. 用戶權限:需要能運行 sudo 命令。

  3. 網絡環境:建議使用國內源(如阿里云、清華源)以加快下載速度。

    • 修改 /etc/apt/sources.list,將官方源替換為國內鏡像。(若不熟悉,可跳過,后續命令會慢一些)。
  4. 基本開發工具:在終端中執行:

    sudo apt-get update
    sudo apt-get upgrade -y
    sudo apt-get install -y build-essential cmake git pkg-config
    
    • build-essential:包含 gcc/g++、make 等常見工具。
    • cmake:構建工具,用于從源碼編譯。
    • git:克隆源碼。
    • pkg-config:管理安裝庫時查找包信息。

溫馨提示:若已安裝最新版 Ubuntu,build-essential、cmake 等工具一般自帶,只需更新即可。

二、從 apt-get 安裝(推薦快速入門)

  1. 安裝 OpenCV 庫及 Python 綁定

    sudo apt-get install -y libopencv-dev python3-opencv
    
    • libopencv-dev:OpenCV C++ 開發包,包含頭文件和庫。
    • python3-opencv:Python3 接口,安裝后可以直接在 Python 中 import cv2
  2. 驗證 C++ 接口

    1. 創建一個測試目錄,例如 ~/opencv_test

      mkdir ~/opencv_test && cd ~/opencv_test
      
    2. 編寫 main.cpp

      #include <opencv2/opencv.hpp>
      #include <iostream>int main() {cv::Mat img = cv::Mat::zeros(200, 400, CV_8UC3);cv::putText(img, "Ubuntu OpenCV", cv::Point(50, 100),cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(0, 255, 0), 2);cv::imshow("Test", img);cv::waitKey(0);return 0;
      }
      
    3. 使用 pkg-config 編譯:

      g++ main.cpp -o test `pkg-config --cflags --libs opencv4`
      
      • 注意:Ubuntu 20.04 及以后的版本,OpenCV4 對應的 pkg-config 名稱為 opencv4,若低版本,可能是 opencv
    4. 運行:

      ./test
      
      • 如果彈出標題為 “Test” 的窗口,且顯示綠色文字 “Ubuntu OpenCV”,則說明安裝成功。
  3. 驗證 Python 接口

    1. 打開終端,輸入 python3 進入交互式 Python:

      python3
      >>> import cv2
      >>> print(cv2.__version__)
      4.x.x
      >>> img = cv2.imread("test.jpg")  # 若當前目錄有圖片文件
      >>> cv2.imshow("img", img)
      >>> cv2.waitKey(0)
      >>> cv2.destroyAllWindows()
      
    2. 若能成功 import cv2,且能調用函數,就說明 Python 接口正常工作。

Tips:使用 sudo apt-get install libopencv-dev python3-opencv 安裝的版本一般不是最新,若想體驗最新版本或編譯選項,請參閱下一節源碼編譯安裝。

三、從源碼編譯安裝(適合高級定制)

如果你想要:

  • OpenCV 最新穩定版/alpha 版;
  • 自定義編譯選項(是否啟用 CUDA、是否啟用 contrib 模塊);
  • 優化性能(選擇 TBB、OpenMP、多線程;或者使用 NEON、V4L2)。

就需要自行從源碼編譯。以下步驟示例基于 Ubuntu 20.04,OpenCV 4.8.0 為例。

1. 安裝額外依賴

先安裝編譯 OpenCV 常用依賴庫和拓展功能庫,包括圖像編解碼、GUI 支持、視頻 I/O、數學優化等:

sudo apt-get update
sudo apt-get install -y build-essential cmake git pkg-config \libjpeg-dev libpng-dev libtiff-dev libopenexr-dev libwebp-dev \libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \libxvidcore-dev libx264-dev libgtk-3-dev libatlas-base-dev gfortran \python3-dev python3-numpy

說明關鍵依賴:

  • libjpeg-dev, libpng-dev, libtiff-dev 等:支持常見圖像格式。
  • libavcodec-dev, libavformat-dev, libswscale-dev:FFmpeg 相關,用于視頻讀寫。
  • libv4l-dev:Linux 視頻采集接口,用于攝像頭。
  • libgtk-3-dev:GUI 窗口顯示支持。
  • libatlas-base-devlibopenblas-dev:線性代數加速。
  • python3-dev, python3-numpy:Python 接口依賴。
2. 下載 OpenCV 與 OpenCV Contrib 源碼
cd ~
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
  • opencv/:主庫源碼。
  • opencv_contrib/:官方擴展模塊(如 xfeatures2d、aruco、text 等)。

如果網絡較慢,可考慮使用國內鏡像,如 Gitee,或者先下載壓縮包再解壓。

3. 創建構建目錄并使用 CMake 配置
cd ~/opencv
mkdir build && cd build

使用 cmake 命令生成 Makefile 或 Ninja 配置。以下示例配置較常用選項,適合大多數入門需求:

cmake -D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=/usr/local \-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \-D BUILD_EXAMPLES=ON \-D BUILD_TESTS=OFF \-D BUILD_DOCS=OFF \-D BUILD_PERF_TESTS=OFF \-D BUILD_opencv_python3=ON \-D ENABLE_NEON=ON \-D WITH_TBB=ON \-D WITH_V4L=ON \-D WITH_QT=OFF \-D WITH_OPENGL=ON \-D BUILD_opencv_ts=OFF \-D OPENCV_ENABLE_NONFREE=ON \..

參數詳解:

  • CMAKE_BUILD_TYPE=Release:發布版本,開啟編譯優化,速度更快。
  • CMAKE_INSTALL_PREFIX=/usr/local:安裝到 /usr/local,供全局使用。
  • OPENCV_EXTRA_MODULES_PATH:指向 opencv_contrib/modules,啟用擴展模塊。
  • BUILD_EXAMPLES:編譯官方示例,幫助學習。
  • BUILD_opencv_python3=ON:生成 Python3 接口。
  • ENABLE_NEON=ON:啟用 ARM NEON 優化(在 Raspberry Pi 上有用)。
  • WITH_TBB=ON:啟用 Intel TBB 多線程加速。
  • WITH_V4L=ON:啟用視頻采集。
  • OPENCV_ENABLE_NONFREE=ON:啟用 SIFT/SURF 等非自由算法(僅在需要時開啟)。

如出現依賴缺失,會提示缺少的 dev 庫名稱,按提示用 sudo apt-get install <缺少的庫> 即可。

4. 編譯與安裝
  1. 并行編譯(4 核 CPU 為例,可根據實際修改 -j4):

    make -j4
    
    • 編譯時間:根據機器性能,一般在 10~30 分鐘之間。
    • 如果編譯過程中報錯,查看報錯信息,根據提示安裝缺失依賴再運行 make
  2. 安裝

    sudo make install
    sudo ldconfig
    
    • make install 會將編譯好的庫、頭文件、Python 模塊等安裝到 /usr/local/
    • ldconfig 更新系統庫緩存,確保新庫可被鏈接。
5. 驗證安裝
  1. C++ 測試

    • 參考上文 Ubuntu apt-get 驗證方法,使用 pkg-config

      pkg-config --modversion opencv4
      

      若返回 4.8.0(或你編譯時的版本號),說明正確識別。

    • 編寫同樣的 main.cpp,然后:

      g++ main.cpp -o test `pkg-config --cflags --libs opencv4`
      ./test
      
  2. Python 測試

    • 打開 Python3 交互式,執行:

      python3
      >>> import cv2
      >>> cv2.__version__
      '4.8.0'
      >>> img = cv2.imread("test.jpg")
      >>> cv2.imshow("img", img)
      >>> cv2.waitKey(0)
      >>> cv2.destroyAllWindows()
      
    • 若能正常 import cv2,版本號正確,且能夠調用 GUI 函數,則編譯安裝成功。

注意:若 Python import 失敗,可能是在多個 Python 環境中出現混淆,可使用 python3 -m pip install numpy 或者檢查 cv2.so 是否在 /usr/local/lib/python3.x/dist-packages/ 下。


樹莓派(Raspberry Pi)下安裝 OpenCV

樹莓派(Raspberry Pi)是一款非常適合學習計算機視覺和物聯網項目的廉價嵌入式開發板。雖然性能有限,但借助 OpenCV 和 Raspberry Pi 相機模組(或 USB 攝像頭),也能完成大量有趣的項目。本節重點介紹如何在樹莓派上安裝 OpenCV。

一、準備樹莓派硬件與系統

  1. 硬件準備

    • Raspberry Pi 4(推薦 4GB/8GB 內存版,樹莓派 3 也可,但編譯時間更長)。
    • microSD 卡:容量 ≥16GB,建議使用 UHS-I 高速卡。
    • 電源適配器:5V/3A(樹莓派 4 推薦)。
    • 外部顯示器、鍵盤、鼠標:用于初次系統配置。
    • USB 攝像頭Raspberry Pi Camera Module V2(可選,用于測試攝像頭功能)。
  2. 系統安裝

    • 下載 Raspberry Pi OS(64 位推薦)鏡像:

      https://www.raspberrypi.com/software/operating-systems/

    • 使用 Raspberry Pi Imager 將鏡像寫入 microSD 卡。

    • 將 SD 卡插入樹莓派,接好顯示器、鍵盤、鼠標、電源線,啟動后完成系統首次配置(連接 Wi-Fi、更新系統)。

    • 系統更新

      sudo apt-get update
      sudo apt-get upgrade -y
      
    • 打開攝像頭接口(若使用 Pi Camera)

      sudo raspi-config
      # 選擇 Interface Options → Camera → Enable
      # 然后重啟
      sudo reboot
      

提示:初次使用終端不熟悉的同學,可以先學習一些 Linux 基礎命令,如 ls, cd, cp, mv, rm, sudo 等。

二、使用 apt-get 直接安裝

Raspberry Pi OS 自帶的源中,有配套 OpenCV 的二進制包,安裝方法與 Ubuntu 類似:

sudo apt-get install -y libopencv-dev python3-opencv
  1. 安裝 C++ 接口與 Python 接口

    • libopencv-dev:C++ 開發包
    • python3-opencv:Python3 接口
  2. 驗證 C++ 接口

    1. 新建測試目錄:

      mkdir ~/opencv_pi_test && cd ~/opencv_pi_test
      
    2. 編寫 main.cpp

      #include <opencv2/opencv.hpp>
      #include <iostream>int main() {cv::Mat img = cv::Mat::zeros(200, 400, CV_8UC3);cv::putText(img, "Rpi OpenCV", cv::Point(50, 100),cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(255, 0, 0), 2);cv::imshow("PiTest", img);cv::waitKey(0);return 0;
      }
      
    3. 編譯并運行:

      g++ main.cpp -o test `pkg-config --cflags --libs opencv4`
      ./test
      
      • 若能正常打開窗口并顯示文字,說明 C++ 部分正常。
  3. 驗證 Python 接口

    python3
    >>> import cv2
    >>> print(cv2.__version__)
    4.x.x
    >>> img = cv2.imread("test.jpg")
    >>> cv2.imshow("img", img)
    >>> cv2.waitKey(0)
    >>> cv2.destroyAllWindows()
    
    • 如果無法彈出窗口,請檢查是否在 SSH 終端中運行。需要在本地桌面環境運行,或使用 cv2.imwrite("out.jpg", img) 保存后查看。

缺點:apt-get 安裝的版本多數較舊,可能缺少新版模塊和性能優化項。如果需要更高性能、更靈活功能,建議從源碼編譯。

三、從源碼編譯安裝(性能優化)

樹莓派性能有限,源碼編譯時間較長(一次完整編譯可能需要 2–4 小時)。但能開啟 NEON、V4L、TBB、GTK 等模塊,對樹莓派攝像頭優化顯著。以下以 OpenCV 4.8.0 編譯為例:

1. 安裝依賴
sudo apt-get update
sudo apt-get install -y build-essential cmake git pkg-config \libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev \libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libgtk-3-dev \libatlas-base-dev libhdf5-dev libprotobuf-dev protobuf-compiler \libgoogle-glog-dev libgflags-dev python3-dev python3-numpy

特別注意

  • libatlas-base-dev:線性代數加速。
  • libv4l-dev:視頻捕獲接口(Pi Camera 也需此支持)。
  • libgtk-3-dev:GUI 窗口。若僅做無窗口腳本可忽略。
2. 獲取源碼
cd ~
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

也可切到指定版本分支或 tag,例如:

cd ~/opencv
git checkout 4.8.0
cd ../opencv_contrib
git checkout 4.8.0
3. 配置編譯
cd ~/opencv
mkdir build && cd buildcmake -D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=/usr/local \-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \-D BUILD_EXAMPLES=ON \-D WITH_TBB=OFF \               # 樹莓派通常不開啟 TBB,加快編譯-D WITH_V4L=ON \-D WITH_QT=OFF \-D WITH_OPENGL=ON \-D ENABLE_NEON=ON \-D BUILD_opencv_python3=ON \-D OPENCV_ENABLE_NONFREE=ON \-D BUILD_DOCS=OFF \-D BUILD_TESTS=OFF \-D BUILD_PERF_TESTS=OFF \..
  • ENABLE_NEON=ON:啟用 ARM NEON 優化。
  • WITH_TBB=OFF:關閉 TBB,以免編譯失敗。
  • WITH_OPENGL=ON:若用 OpenGL 渲染。
  • 其他同 Ubuntu 源碼配置。
4. 編譯與安裝
make -j4  # 如果是樹莓派 4,默認 4 核并行
sudo make install
sudo ldconfig
  • 編譯時間:2–4 小時不等。耐心等待。
  • 若過程中報錯,可根據缺少的依賴名稱安裝補充。
5. 驗證安裝與攝像頭測試
  1. C++ 測試

    • 同 Ubuntu 步驟,用 pkg-config 驗證版本:

      pkg-config --modversion opencv4
      

      若返回 4.8.0 或對應版本號,即可進行示例編譯。

  2. Python 測試

    python3
    >>> import cv2
    >>> print(cv2.__version__)
    '4.8.0'
    >>> cap = cv2.VideoCapture(0)
    >>> ret, frame = cap.read()
    >>> cv2.imshow("Cam", frame)
    >>> cv2.waitKey(0)
    >>> cap.release()
    >>> cv2.destroyAllWindows()
    
    • 若使用 Pi Camera,需要先安裝 python3-picamera 并配置 opencv 支持。
  3. 攝像頭測試(USB 攝像頭或 Pi Camera)

    • USB 攝像頭:只要 VideoCapture(0) 即可訪問。

    • Pi Camera

      1. 安裝 picamera 支持:

        sudo apt-get install -y python3-picamera
        
      2. 測試代碼(Python):

        import cv2
        from picamera.array import PiRGBArray
        from picamera import PiCamera
        import timecamera = PiCamera()
        camera.resolution = (640, 480)
        rawCapture = PiRGBArray(camera, size=(640, 480))
        time.sleep(0.1)for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):image = frame.arraycv2.imshow("PiCam", image)rawCapture.truncate(0)if cv2.waitKey(1) & 0xFF == ord('q'):breakcamera.close()
        cv2.destroyAllWindows()
        
      3. 運行:

        python3 pi_camera_test.py
        
        • 畫面出現后,按 q 鍵退出。

至此,樹莓派平臺上的 OpenCV 安裝與測試完成!


常見問題及故障排查

本節匯總一些各平臺常見的安裝錯誤與解決方案,幫小白迅速定位問題。

1. 環境變量不生效

  • 現象:Windows 上在 CMD 中輸入 opencv_version 提示命令未找到;運行 exe 報錯找不到 *.dll

  • 檢查

    1. 確認是否在 “系統變量” 而非 “用戶變量” 中添加 PATH。
    2. 重新打開一個新的 CMD/PowerShell 窗口,環境變量變更才會生效。
    3. PATH 中的路徑是否拼寫正確,沒有多余空格或反斜杠。
  • 解決方案

    • 重新編輯環境變量,復制粘貼完整路徑后確定。
    • 在命令行輸入 echo %PATH%echo $Env:Path(PowerShell)檢查是否包含 C:\opencv\build\x64\vc15\bin

2. CMake 找不到依賴

  • 現象:在 Ubuntu/樹莓派源碼編譯時,運行 cmake 報類似 “Could NOT find GTK3 (missing: GTK3_X11_INCLUDE_DIR)” 或 “Could NOT find libjpeg” 等錯誤。

  • 檢查與解決

    1. 從提示信息中提取關鍵缺失庫名稱,例如 GTK3_X11_INCLUDE_DIR,使用 sudo apt-get install libgtk-3-dev

    2. 若缺少圖像編解碼支持,安裝對應 dev 包:

      sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev
      
    3. 安裝視頻 I/O 相關依賴:

      sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
      
    4. 重新運行 cmake,直到沒有依賴缺失的警告。

3. Python 導入失敗

  • 現象import cv2ModuleNotFoundError: No module named 'cv2'

  • 原因:可能同時有多個 Python 版本,cv2 安裝到了其它環境;或者源碼編譯時 Python 環境不一致。

  • 解決

    1. 確保使用的是系統默認 Python3,輸入 which python3 查看路徑。

    2. 再次安裝 numpy

      python3 -m pip install --user numpy
      
    3. 確認 cv2 模塊文件是否在 Python site-packages 中:

      python3 -c "import sys; print([p for p in sys.path if 'site-packages' in p])"
      ls /usr/local/lib/python3.*/dist-packages | grep cv2
      
    4. 若編譯后沒有生成 cv2.so,可嘗試重新編譯并確認 BUILD_opencv_python3=ON

4. 編譯報錯“缺少 xxx 庫”

  • 現象:在 Windows/Ubuntu/樹莓派上從源碼編譯時,make 過程中提示 “undefined reference to <某個函數>”、“找不到 <某個庫>” 等。

  • 可能原因 & 解決思路

    1. Windows

      • 檢查 Visual Studio 擴展是否完整安裝,確保 C++ 桌面開發工作負載已勾選。
      • 檢查 CMake 文件中指定的 OPENCV_EXTRA_MODULES_PATH 是否正確。
      • 確認是否遺漏 dll/lib 目錄或連接錯誤。
    2. Ubuntu/樹莓派

      • 查找提示的缺少庫名稱和對應的 dev 包,例如如果報缺少 protobuf,則:

        sudo apt-get install -y libprotobuf-dev protobuf-compiler
        
      • 若提示缺少 Python 頭文件,確保已安裝 python3-dev

      • 有時需要先卸載系統自帶 OpenCV:

        sudo apt-get purge libopencv*
        sudo apt-get autoremove
        

        然后再編譯安裝。

總之,遇到編譯錯誤時,仔細閱讀報錯信息中的關鍵詞(庫名、函數名),在網上搜索對應的缺失包名,然后執行 apt-get 安裝即可。對新手來說,依賴安裝是最常見的環節,多試幾次就熟悉了。


總結與擴展閱讀

至此,你已經掌握了在 Windows/Ubuntu/樹莓派“從零開始” 安裝與配置 OpenCV 的全過程。無論是直接使用預編譯包,還是從源碼編譯定制,都涉及到了如下關鍵步驟:

  1. 環境準備:編譯工具、依賴庫、Python 環境。
  2. 獲取 OpenCV:選擇預編譯版本或克隆源碼。
  3. 配置 & 編譯:CMake 參數設置、make 并行編譯、安裝與 ldconfig
  4. 環境變量 & 依賴管理:確保系統能找到 DLL/SO 庫、Python 能找到 cv2 模塊。
  5. 驗證安裝:用最簡單的 “Hello OpenCV” 代碼測試窗口顯示與圖像處理功能。
  6. 常見問題排查:環境變量、CMake 缺失依賴、Python 路徑混淆、編譯報錯缺少庫等。

持續學習與擴展

  • 官方文檔

    • OpenCV 官網文檔(C++):https://docs.opencv.org/
    • OpenCV Python 教程:https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html
  • 經典書籍

    • 《Learning OpenCV 4 Computer Vision with Python 3》
    • 《OpenCV 4 with C++ Blueprints》
  • 示例項目

    • GitHub 上搜索 “awesome-opencv” 了解各類示例與實踐項目。
    • 在樹莓派上嘗試人臉識別、物體跟蹤、機器學習模型的推理等。
  • 社區資源

    • Stack Overflow(中英雙語),隨時搜索具體問題的解決方案。
    • CSDN、博客園等國內技術博客,大量教程與心得。

請將本教程保存至你常用的筆記工具,轉發給同學或網友,讓更多 “零基礎的小白” 能夠快速開啟計算機視覺之旅。如果在安裝過程中遇到任何問題,歡迎留言交流,我們一起排查解決!


祝你學習順利,早日完成第一個 OpenCV 項目! 用心閱讀、動手實踐,你一定能從“小白”變成“小高手”!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96529.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96529.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96529.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【華為云】容器鏡像服務 SWR 詳解:從上傳下載到 ModelArts 應用

前言 華為云容器鏡像服務&#xff08;Software Repository for Container&#xff0c;簡稱 SWR&#xff09;是華為云提供的企業級容器鏡像倉庫服務。它支持 Docker 鏡像的存儲、管理和分發&#xff0c;為容器化應用提供安全可靠的鏡像托管服務。本文將詳細介紹 SWR 的核心功能…

計算機網絡知識點梳理(一)概述:組成、發展、性能、體系結構等

目錄 一、互聯網 &#xff08;1&#xff09;特點 &#xff08;2&#xff09;網絡的組成 &#xff08;3&#xff09;網絡、互連網、因特網 &#xff08;4&#xff09;互聯網發展的三個階段 &#xff08;5&#xff09;標準化 &#xff08;6&#xff09;組成 二、計算機網…

不同行業視角下的數據分析

聲明&#xff1a;以下部分內容含AI生成 基于行業維度來劃分數據分析崗位&#xff0c;可以幫助我們更好地理解不同行業對數據分析技能、業務知識和職業發展的獨特要求。 目錄 一、總體框架&#xff1a;為什么行業維度如此重要&#xff1f; 二、主要行業劃分及詳細講解 1. 互聯…

「CTF」青少年CTF·雛形系統

題目&#xff1a; 解題過程 嘗試隨便輸入點什么&#xff0c;沒有結果 使用dirsearch掃描網址目錄 可以看到有掃描到一個www.zip&#xff0c;zip文件大概率有需要的東西 網址后加上www.zip就能對該文件進行下載 文件解壓縮后如下 打開qsnctf.php&#xff0c;代碼內容如下 <…

Java實戰項目演示代碼及流的使用

project 準備牌->洗牌->發牌 import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet;public class PokerGameplus {static HashMap<Integer,String> hs new HashMap<>();static ArrayList<Int…

使用 OpenLayers + 高德瓦片源實現旅游足跡地圖

作為一個熱愛旅行的開發者&#xff0c;我一直想要一個能夠記錄和展示自己旅游足跡的功能。市面上雖然有很多地圖應用&#xff0c;但大多功能復雜&#xff0c;而我只需要一個簡單直觀的方式來標記去過的地方和想去的地方。 于是我決定在自己的個人網站上實現一個旅游足跡地圖功…

Redis基礎(含常用命令等以快速入門)

一、初步認識 1、NoSQL SQL 關系型數據庫&#xff08;表結構&#xff0c;強一致&#xff09;NoSQL 非關系型數據庫&#xff08;靈活結構&#xff0c;最終一致&#xff0c;水平擴展爽&#xff09; 維度SQL&#xff08;關系型&#xff09;NoSQL&#xff08;非關系型&#xf…

OSPF特殊區域、路由匯總及其他特性

OSPF路由器需要同時維護域內路由、域間路由、外部路由信息數據庫。當網絡規模不斷擴大時&#xff0c;LSDB規模也不斷增長。如果某區域不需要為其他區域提供流量中轉服務&#xff0c;那么該區域內的路由器就沒有必要維護本區域外的鏈路狀態數據庫。OSPF通過劃分區域可以減少網絡…

在緩存Cacheable注解中Key值如何使用常量

1.在常量類中定義商品緩存空間和商品緩存KEY public interface CacheConstants {/*** Goods Cache Name*/String QNA_GOODS_CACHE "qna-goods";/*** Goods Cache key*/String QNA_GOODS_CACHE_KEY "qna_goods:";/*** Order Cache Name*/String QNA_ORDER…

sklearn聚類

在此將sklearn官網的一張關于聚類算法比較的圖片放過來。 下面的表格是根據sklearn官網翻譯而來。 方法名稱 參數 可擴展性 應用場景 幾何度量(距離) MiniBatchKMeans 簇的數量 非常適合處理大量樣本和中等數量的簇(使用MiniBatch時) 通用型,適用于簇大小均勻、幾何形狀平…

Recharts:React圖表庫,組件化設計助力高效數據可視化開發

你寫前端項目時有沒有卡過數據可視化的坑&#xff1f;比如要做個用戶增長折線圖&#xff0c;查了半天原生 JS 教程&#xff0c;寫了幾十行代碼&#xff0c;結果要么坐標軸對不上&#xff0c;要么數據渲染不出來&#xff1b;或者用了某個圖表庫&#xff0c;文檔全是英文&#xf…

Java 中String類的常用方法

Java 中的 String 類提供了豐富的方法用于字符串操作&#xff0c;以下是最常用的一些方法分類總結&#xff1a; 一、獲取字符串信息length()&#xff1a;返回字符串長度&#xff08;字符個數&#xff09; String s "hello"; int len s.length(); // len 5charAt(i…

【記錄】Docker|Docker內部訪問LInux主機上的Ollama服務

部分內容參考自&#xff1a;使得 docker 容器內部可以訪問宿主機的 ollama 服務_docker 訪問 ollama-CSDN 博客&#xff0c;補充添加了更多的細節&#xff0c;也補充了一個更加簡單的方案。 我測試的系統版本&#xff1a;Ubuntu 24.04.2 LTS noble&#xff0c;查看方式是指令 l…

數據庫物理外鍵與邏輯外鍵全解析

一、核心概念 1. 物理外鍵 (Physical Foreign Key) 物理外鍵是數據庫層面通過語法明確創建的外鍵約束。它是由數據庫管理系統&#xff08;DBMS&#xff09;本身&#xff08;如 MySQL, PostgreSQL, Oracle&#xff09;來強制實現的。 它是什么&#xff1a;數據庫表結構的一部分&…

Vue3入門到實戰,最新版vue3+TypeScript前端開發教程,創建Vue3工程,筆記03

筆記03 一、創建Vue3項目 1.1、創建方式 使用vue-cli創建使用vite創建&#xff08;推薦&#xff09;Vue3官網創建項目文檔 兩種創建方式&#xff0c;推薦使用第二種。vue-cli是基于webpack實現的&#xff0c;vite是新一代前端構建工具。 2.1、vue3項目結構

企業如何利用群暉 NAS 構建高效數據備份與容災體系

在數字化轉型的過程中&#xff0c;企業數據已成為核心資產。然而&#xff0c;勒索病毒攻擊、硬件故障、操作失誤以及自然災害等風險&#xff0c;都可能導致數據丟失甚至業務中斷。如何構建一個高效、安全、可恢復的數據備份與容災體系&#xff0c;已成為企業 IT 管理的關鍵課題…

關于在pycharm終端連接服務器

1、先為每個項目創建一個虛擬環境2、使用命令下載torchpip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple安裝之后發現安裝在了本地&#xff0c;我需要安裝到服務器里面&#xff0c;此時可以把本地的刪除&#xff0c;因為是默認安裝到c盤&#xff0c;除非你指定路…

CSS 繼承 (Inheritance)

一、核心概念CSS 繼承是指某些 CSS 屬性如果被設置在父元素上&#xff0c;其值會自動流向&#xff08;應用到&#xff09;其所有后代元素&#xff08;子、孫元素等&#xff09;的特性。核心價值&#xff1a;通過將樣式聲明應用于祖先元素&#xff0c;可以避免在所有后代元素上重…

UGUI源碼剖析(15):Slider的運行時邏輯與編輯器實現

UGUI源碼剖析&#xff08;第十五章&#xff09;&#xff1a;Slider的運行時邏輯與編輯器實現 在之前的章節中&#xff0c;我們已經深入了UGUI眾多核心組件的運行時源碼。然而&#xff0c;一個完整的Unity組件&#xff0c;通常由兩部分構成&#xff1a;定義其在游戲世界中行為的…

【Python】爬蟲html提取內容基礎,bs4

前言 BeautifulSoup也就是bs4,里面功能其實有很多&#xff0c;不過對于爬蟲而言主要掌握一下幾塊就可以了 怎么找標簽&#xff1f;找到標簽后怎么獲取屬性&#xff0c;怎么獲取文本內容如何通過找到的標簽繼續獲取子標簽 安裝 pip install bs4案例 對于找標簽來說&#xf…