海思3519A上移植OpenCV3.x


環境安裝與准備

下載opencv3.4.1.
或者
下載opencv3.2.0.

進入到opencv所在的目錄新建目錄build,install

安裝cmake:

apt-get install cmake-qt-gui

安裝gtk等:

apt-get install libgtk2.0-dev pkg-config

配置和生成

啟動cmake:

cmake-gui

沒有安裝的話,根據提示進行安裝即可,安裝完成后進行配置:
Configur
上圖:

Operation System --- arm-himix200-linux-gcc
gcc ---- /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc
g++  ---- /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++

點擊Configure之后,設置安裝路徑,我的設置為:

配置CMAKE_EXE_LINKER_FLAGS:-lpthread -lrt -ldl

點擊generate

修改出錯的地方

修改1

出現錯誤:

Error 1 make[1]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all] Error 2 make: *** [all] 
Error 2 #### make failed to build some targets (1 seconds) ####

解決辦法時找到3rdparty/protobuf/src/google/protobuf/common.cc文件,添加宏定義#define HAVE_PTHREAD:

修改2

如果上面配置了CMAKE_EXE_LINKER_FLAGS,就不會出現這個錯誤。
若沒有配置出現錯誤:

../../lib/libopencv_core.so: undefined reference to `dlclose'
 ../../lib/libopencv_core.so: undefined reference to `dlsym'

解決辦法時找到build目錄下的CMakeCache.txt文件,在原文中修改:

CMAKE_EXE_LINKER_FLAGS:STRING= -lpthread -lrt -ldl

如圖:

修改3

找不到zlib.h
這個版本的OpenCV已經包含了第三方的庫3rdparty,
在CMAKE中加入:

修改4

CMAKE 中取消:WITH_GTK

編譯和安裝

編譯

make -j16

安裝

待編譯完成之后,執行安裝:

make install

安裝之后在設置的路徑下出現:

文件直達

測試

/install/lib/目錄下所有的lib文件拷貝到板載系統的/lib`目錄下;
我是在qt中使用opencv,提前已經編譯好了可以在海思3519A上執行的qt,測試部分代碼如下:

void cvTest()
{
    Mat img = imread("lena.jpg");

    Mat grad_x;
    Sobel(img, grad_x, CV_16S, 1, 0);
    Mat grad_y;
    Sobel(img, grad_y, CV_16S, 0, 1);

    Mat gradImage = abs(grad_x) + abs(grad_y);

    double minGrad, maxGrad;
    minMaxLoc(gradImage, &minGrad, &maxGrad);
    Mat gradImage_8U;
    gradImage.convertTo(gradImage_8U, CV_8U, 255./maxGrad);

    Mat thresholdedImage;//閾值化后的二值圖
    threshold(gradImage_8U, thresholdedImage, 20, 255, THRESH_BINARY_INV);

    imwrite("gradImage_8U.jpg",gradImage_8U);
    imwrite("thresholdedImage.jpg",thresholdedImage);

}

將生成的可執行文件拷貝到板載系統上,並運行:
測試結果如下:

這里需要注意到是:
由於編譯的時候無法加入WITH_GTK選項,因而在板卡上執行的程序無法使用函數imshow

完整的測試程序下載

Ref


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM