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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【OpenCV】在MacOS上源码编译OpenCV

發布時間:2024/1/3 windows 48 coder
生活随笔 收集整理的這篇文章主要介紹了 【OpenCV】在MacOS上源码编译OpenCV 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言 在做視覺任務時,我們經常會用到開源視覺庫OpenCV,OpenCV是一個基于Apache2.0許可(開源)發行的跨平臺計算機視覺和機器學習軟件庫,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。 最近在項目中,我遇到了在MacOS上使用OpenCV需求,目前OpenCV官網上并沒有提供OpenCV現成的安裝包,因此在此處我們需要自己進行編譯,所以在此處我們將結合``opencv_4.8.0``、``opencv_contril_4.8.0``,演示如何源碼編譯并使用

1. 下載項目源碼

? 首先下載項目源碼,這里我們下載的是4.8.0,大家可以根據自己的需求進行下載,不過要盡量保證opencvopencv_contril源碼版本一致。通過下面代碼我們進行源碼下載:

wget https://github.com/opencv/opencv/archive/4.8.0.zip
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.8.0.zip

? 下載完代碼后,將代碼文件解壓到當前文件中,如下圖所示:

2. 創建CMake編譯文件

? OpenCV支持CMake編譯,所以此處需要安裝CMake,安裝方式此處不做講解。輸入一下指令,打開并創建編譯文件夾:

cd opencv-4.8.0
mkdir build && cd build

? 接下來輸入CMake指令,進行CMake編譯,此處需要注意三個路徑:

  • CMAKE_INSTALL_PREFIX=<install path><install path>表示編譯好的OpenCV安裝路徑,可以指定到系統路徑,也可以是自定義路徑,此處設置為:/Users/ygj/3lib/opencv_4.8.0/include/opencv4/opencv2,注意這個路徑,后續編譯C++項目時會用到。
  • OPENCV_EXTRA_MODULES_PATH=<model path><model path>表示擴展模塊的路徑,就是上文我們下載的opencv_contril_4.8.0文件,在此處設置為/Users/ygj/3lib/opencv_build/opencv_contrib-4.8.0/modules
  • PYTHON3_EXECUTABLE=<python path><python path>表示本計算機Python的安裝路徑,此處也可以不設置,主要就是設置要不要生成Python依賴庫。如果設置了,需要開啟BUILD_opencv_python2=ON或者BUILD_opencv_python3=ON,具體按照你的電腦中安裝的Python版本決定。
    設定好上面三個路徑后,就可以在終端輸入以下指令,進行CMake編譯:
cmake -DCMAKE_SYSTEM_PROCESSOR=arm64 -DCMAKE_OSX_ARCHITECTURES=arm64 -DWITH_OPENJPEG=OFF -DWITH_IPP=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=<install path> -D OPENCV_EXTRA_MODULES_PATH=<model path> -D PYTHON3_EXECUTABLE=<python path> -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_EXAMPLES=ON ..

? 編譯完成后如下圖所示,不過此處要注意一點,在編譯時會下載相關的第三方庫,要保證網絡通暢,防止下載失敗。

3. 編譯安裝

? 上一步完成CMake編譯后,就可以進行make編譯了,只需要輸入一下指令即可,-j8表示用8個核心進行編譯,具體設置可以根據你的電腦進行設置,數值越大編譯越快。

make -j8

? 編譯完成后,如下圖所示:

? 接下來就是進行安裝,只需要一下指令就可:

make install

? 安裝完成后,會在你上文設置的安裝路徑下生成依賴文件,如下圖所示:

4. 案例測試

? 首先創建一個新的C++文件main.cpp文件,在文件中添加以下代碼:

#include "opencv2/opencv.hpp"

int main(){
    std::cout<<"hello opencv!"<<std::endl;
    cv::Mat image = cv::imread("image.jpg");
    if (!image.empty())
    {
        std::cout << "image is OK!" << std::endl;
    }
    std::cout << "圖像的寬度是:" << image.rows << std::endl;
    std::cout << "圖像的高度是:" <<image.cols << std::endl;
    std::cout << "圖像的通道數是:" << image.channels() << std::endl;
    cv::Mat image1;
    cv::cvtColor(image,image1,cv::COLOR_RGB2GRAY);
    cv::imshow("image",image);
    cv::imshow("image1",image1);
    cv::waitKey(0);
    std::cout<<"hello opencv!"<<std::endl;
    return 0;
}

? 這一段代碼主要是讀取本地圖片文件,獲取并輸出圖片的基本信息,然后使用窗口將圖片展示出來。

? 此處編譯方式采用CMake編譯方進行編譯,定義的CMakeLists.txt文件如下所示:

cmake_minimum_required(VERSION 3.28)
project(opencv)
set(OpenCV_DIR /Users/ygj/3lib/opencv_4.8.0/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV_DIR = ${OpenCV_DIR}")
message(STATUS "OpenCV_INCLUDE_DIRS = ${OpenCV_INCLUDE_DIRS}")
message(STATUS "OpenCV_LIBS = ${OpenCV_LIBS}")
include_directories(
    ${OpenCV_INCLUDE_DIRS}
)
add_executable( main main.cpp )
target_link_libraries( main ${OpenCV_LIBS} )

? 在CMakeLists文件中,我們通過find_package(OpenCV REQUIRED)查找本計算機安裝的OpenCV依賴庫,但是需要在之前指定OpenCV的安裝路徑。寫完Cmake文件后,在命令行中輸入cmake .進行運行,輸出結果如下圖所示:

? 可以看出,CMake已經成功找到了本計算機安裝的OpenCV路徑,并獲取了項目編譯所需要的所有信息。
如果CMake沒有任何問題,接下來就進行項目編譯,只需要輸入make指令即可,輸出如下所示:

? make之后,會在項目文件夾中生成一個main文件,接下來直接運行該文件,斌可以的到如下圖所示的輸出:

5. 總結

? 在本項目中,我們實現了在MacOS系統上源碼編譯OpenCV,并在VS Code上使用OpenCV做了項目測試,最后成功實現了在MacOS系統上使用我們源碼編譯OpenCV的鏈接庫,進行了圖片處理。

總結

以上是生活随笔為你收集整理的【OpenCV】在MacOS上源码编译OpenCV的全部內容,希望文章能夠幫你解決所遇到的問題。

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