日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cmake 编译curl源码_OpenCV4.0 源码编译

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cmake 编译curl源码_OpenCV4.0 源码编译 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前寫過幾篇關于OpenCV的博客,都是基于openCV 3.14寫的,10月份OpenCV發布了4.0的bate版本,我就切換到4.0版本上來。之后的博客都會是基于4.0版本的。本文主要介紹一下三個方面的內容:

  • OpenCV 4.0的改進

  • 編譯OpenCV 4.0源碼的方法

  • 源碼編譯中遇到的問題及解決方法

這三方面的問題都是比較基礎的,但是對于新手可能有些復雜。本文是在Ubuntu 18.04系統上進行編譯,如果熟悉cmake可能會更好。

OpenCV 4.0的更新

4.0版本的改進主要集中在深度學習和高性能計算方面,一下包含4.0 alpha版本以來的改進:

  • 深度學習方面:

    • 將ONNX解析器添加到OpenCV DNN模塊中,它能夠支持AlexNet、Incepiton v2、Reset、VGG等分類網絡。同時改進其導入器,能夠支持更多拓撲

    • 屏蔽RCNN支持和示例

    • 修復了OpenCL后端的幾個穩定性問題

    • 添加了Intel的開源工具OpenVINO,該工具包可以實現高性能計算機視覺和深度學習推理,并可跨多種類型的英特爾平臺輕松實現異構執行。

  • 高性能計算方面:

    • 使用AVX2對60個kernels進行了加速優化,涉及18個功能

    • 針對iGPU加速了Kinect Fusion算法,在高高分辨率(512×521×512)上可達到并行CPU版本的3倍。

    • 使用C++ 11庫,需要符合C++ 11標準的編譯器,默認情況下可以使用一些更好的功能,例如parallel_for和lambda函數,方便迭代cv::Mat,通過列出他的元素初始化cv::Mat等。另外,parallel_for可以使用std::threads池作為后端。

    • 使用標準的std::string和std::shared_ptr代替cv::String和cv::ptr。

    • 添加了FP16支持(CV_16F)

    • 該版本中OpenCV 1.x的C API部分的被排除,在接下來的4.0 gold版本中將完成清理.

OpenCV 4.0 源碼編譯

OpenCV本身依賴很多庫,所以首先要搭建編譯環境。注意編譯器需要支持c++ 11,例如g++。

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

這其中包含了cmake和git,如果安裝過就不需要重新安裝了。

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

這些庫都很好安裝,如果安裝過程遇到什么問題,可以直接把報錯信息粘貼出來百度或者Google,很容易找到解決辦法,畢竟已經有很多前輩踩過這些問題了。另外就是對于新手用好下面兩個命令:

sudo apt-get update
sudo apt-get upgrade

安裝庫的過程中,很多問題更新以后就可以解決。


做好前戲之后,就要直奔主題了。
OpenCV編譯非常方便,畢竟cmake已經寫的很好了。編譯命令很容易在網上找到,這里就再貼一下:

cmake ../ -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local

簡單解釋一下:

  • OpenCV是不讓在源文件目錄下編譯的,所以在編譯之前可以在opencv目錄下創建build或者release等目錄,然后進入該目錄執行以上代碼。../表示上一級目錄,這里需要是CMakeLists.txt所在的目錄。

  • 選擇程序構建的類型,release版本 or debug版本

  • 編譯后安裝的目錄,注意這里可以自己指定安裝的目錄,默認情況下會安裝到/usr/local目錄下。

簡單看一下cmake文件,

  • 第一段:

    9 ?# Disable in-source builds to prevent source tree corruption.
    10 if(" ${CMAKE_SOURCE_DIR}" STREQUAL " ${CMAKE_BINARY_DIR}")
    11 ? message(FATAL_ERROR "
    12 FATAL: In-source builds are not allowed.
    13 ? ? ? ?You should create a separate directory for build files.
    14 ")
    15 endif()

    可以看到,是不允許進行內部編譯。

  • 第二段:

    38 ?if(NOT DEFINED CMAKE_INSTALL_PREFIX) #如果沒有指定安裝目錄
    39 ? if(NOT CMAKE_TOOLCHAIN_FILE) #并且沒有指定架構
    40 ? ? # it _must_ go before project(OpenCV) in order to work
    41 ? ? if(WIN32)
    42 ? ? ? set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory")
    43 ? ? else()
    44 ? ? ? set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory")
    45 ? ? endif()
    46 ? else()
    47 ? ? #Android: set output folder to ${CMAKE_BINARY_DIR}
    48 ? ? set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_BINARY_DIR} CACHE PATH "root for library output, set this to change where android libs are compiled to" )
    49 ? ? # any cross-compiling
    50 ? ? set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory")
    51 ? endif()
    52 endif()

    這是關于安裝目錄的代碼,可以看出,默認情況下在Linux系統中是安裝在/usr/local/目錄下的。
    另外還有很多選項,可以在CMake文件中去編輯也可以使用編譯選項-D去指定,用戶可以根據需求修改。


以上僅僅是使用cmake生成了makefile,接下來是編譯安裝的命令:

make -j8
make install

make -j8是編譯,j8只是根據處理器不同編譯速度不同,例如4核8線程的機器-j8速度是最快的。


到此為止就完成了OpenCV 4.0的源碼編譯安裝。
最后一步是設置環境變量,命令如下:

vi ~/.bashrc

在文件最后增加下面兩行代碼:注意這里的路徑是我的安裝路徑,需要修改為你自己前文執行cmake的時候配置的安裝路徑

export PKG_CONFIG_PATH=~/study/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=~/study/usr/local/lib

測試一下:
在準備工作中我們安裝過一個工具叫做pkg-config, 運行如下命令:

pkg-config --helpUsage: ? ? ? ? ? ? ?
?pkg-config [OPTION?] ? ? ? ? ? ? ? ? ?

Help Options:
?-h, --help ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Show help options ? ? ? ? ? ? ? ? ?

Application Options: ? ? ? ? ? ? ?
?--version ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? output version of pkg-config ? ? ? ? ? ?
?--modversion ? ? ? ? ? ? ? ? ? ? ? ? ? ?output version for package ? ? ? ? ? ? ? ?
?--atleast-pkgconfig-version=VERSION ? ? require given version of pkg-config ? ? ? ? ? ? ? ?
?--libs ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?output all linker flags ? ? ? ? ? ? ? ? ?
?--static ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?output linker flags for static linking ? ? ? ? ? ? ? ?
?--short-errors ? ? ? ? ? ? ? ? ? ? ? ? ?print short errors ? ? ? ? ? ? ? ?
?--libs-only-l ? ? ? ? ? ? ? ? ? ? ? ? ? output -l flags ? ? ? ? ? ? ?
?--libs-only-other ? ? ? ? ? ? ? ? ? ? ? output other libs (e.g. -pthread) ? ? ? ? ? ? ? ?
?--libs-only-L ? ? ? ? ? ? ? ? ? ? ? ? ? output -L flags ? ? ? ? ?

?... ? ?

僅僅截取了一部分,能夠看到使用--modversion命令可以查看opencv的版本號。

執行如下代碼:

pkg-config --modversion opencv4

顯示如下:

4.0.0

測試代碼

直接上代碼:

#include "opencv2/core.hpp"
? #include "opencv2/imgproc.hpp"
? #include "opencv2/highgui.hpp"
? #include
? using namespace cv;
? using namespace std;
?int main()
?{
? ? ?cout << "Hello OpenCV " << CV_VERSION << endl;
? ? ? ? ?// 載入圖像
? ? ? ? ?Mat myMat = imread("timg.jpeg", 1);
? ? ? ? ?// 創建一個窗口
? ? ? ? ?namedWindow("Opencv Image", WINDOW_AUTOSIZE);
? ? ? ? ?// 顯示圖像
? ? ? ? ?imshow("Opencv Image", myMat);
? ? ? ? ?// 等待按鍵延時 ms
? ? ? ? ?waitKey(5000);
? ? ?return 0;
?}

編譯命令:

g++ test.cpp `pkg-config --libs --cflags opencv4`

注意使用的是反引號,關于pkg-config命令的含義可以使用--help查看;主要是輸出鏈接OpenCV的庫,這里只是為了方便,正確使用的時候,可以自己寫cmake去設置。

編譯完以后直接執行a.out文件就可以看到效果了。需要字節下載一張.jpeg的圖片放到test.cpp所在的目錄。

總結

以上是生活随笔為你收集整理的cmake 编译curl源码_OpenCV4.0 源码编译的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。