zedboard移植opencv_轉載自rainsky博客

不知道爲什麼,csdn一直提示說含有被禁用的url,無法發表,需要的朋友到原地址看吧

http://www.

eefocus.com/sj229335457/blog/13-06/295352_ad954.html



和在pc機上一樣,建立 文件夾/opt/zedboard/opencv_zed,複製文件進來,解壓縮:建立兩個文件夾 build、 install,如下圖 



在這裏和pc不太一樣了,需要設置編譯環境,在opencv-2.4.4下面新建一個文件,文件名爲toolchain.cmake,裏面的內容爲:

set(CMAKE_SYSTEM_NAME Linux)

set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_COMPILER /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-gcc)

set(CMAKE_CXX_COMPILER /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/bin/arm-xilinx-linux-gnueabi-g++)

進入build文件裏面,輸入一下命令進行配置:cmake -D CMAKE_TOOLCHAIN_FILE=toolchain.cmake -D CMAKE_INSTALL_PREFIX=/opt/zedboard/opencv_zed/opencv-2.4.4/install ../

其中CMAKE_INSTALL_PREFIX,代表的是安裝的路徑,最好是新建一個新文件夾好保存,另外需要注意的是,最後的是 ../ 小心不要少敲一個點,否則會錯的哦。

 

ccmake ./ 進行配置,配置的內容是所有的以WITH開頭的選項全部選成OFF,(除了WITH_V4L 選爲ON)因爲這些需要第三方庫支持的,要是選擇這些的話就需要安裝第三方庫了。

按c配置,按g生成並保存

圖2

配置完成後就輸入make開始編譯,編譯完成後就是make install安裝啦。安裝完成後在install的文件夾裏就是運行庫啦。

新建一個專門寫程序的文件夾 mkdir /opt/zedboard/opencv_zed/code

在裏面新建一個測試程序:

vim edge_detection.cpp 這個代碼是教材裏面帶的那個:

/*code*/

#include "cv.h"

#include "highgui.h"

 

IplImage* doCanny(

    IplImage* in,

    double    lowThresh,

    double    highThresh,

    double    aperture)

{

    if (in->nChannels != 1)

        return(0); // Canny only handles gray scale images

    IplImage* out = cvCreateImage( 

        cvGetSize( in ),

        in->depth, //IPL_DEPTH_8U,    

        1);

    cvCanny( in, out, lowThresh, highThresh, aperture );

    return( out );

};

 

int main( int argc, char** argv )

{

  if(argc!= 3)printf("arguments error! format origin_image.bmp target_image.bmp\n");

  IplImage* img_rgb = cvLoadImage( argv[1] );

  IplImage* img_gry = cvCreateImage( cvSize( img_rgb->width,img_rgb->height ), img_rgb->depth, 1); 

  cvCvtColor(img_rgb, img_gry ,CV_BGR2GRAY);

 // cvNamedWindow("Example Gray", CV_WINDOW_AUTOSIZE );

 // cvNamedWindow("Example Canny", CV_WINDOW_AUTOSIZE );

 // cvShowImage("Example Gray", img_gry );

  IplImage* img_cny = doCanny( img_gry, 10, 100, 3 );

  if(cvSaveImage(argv[2],img_cny,0)!=0)

        printf("Save Image Successful\n");

 // cvShowImage("Example Canny", img_cny );

 // cvWaitKey(0);

  cvReleaseImage( &img_rgb);

  cvReleaseImage( &img_gry);

  cvReleaseImage( &img_cny);

 // cvDestroyWindow("Example Gray");

 // cvDestroyWindow("Example Canny");

 return 0;

}

複製一個lena圖像進來,最好是一個.jpg格式和一個.bmp格式(作對比),並輸入下面的命令進行交叉編譯

arm-xilinx-linux-gnueabi-g++  -I /opt/zedboard/opencv_zed/opencv-2.4.4/install/include  -I/opt/zedboard/opencv_zed/opencv-2.4.4/install/include/opencv -L/opt/zedboard/opencv_zed/opencv-2.4.4/install/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann ./edge_detection.cpp -o ./edge_detection.o

圖3

如果要是想在zedboard板卡上面運行,還需要將opencv交叉編譯運行的庫複製到板卡里面,和qt一樣,需要製作鏡像,opencv的話只需要將lib這個文件裏面的內容做成鏡像就可以了(如果用這個鏡像運行的話,會出現一個問題,就是在運行的時候找不到stdc++.so這個庫,因此需要先將這個庫copy到/opt/zedboard/opencv_zed/opencv-2.4.4/install/lib,源文件在交叉編譯器裏面,總的命令爲:

cp /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so* /opt/zedboard/opencv_zed/opencv-2.4.4/install/lib)。掛載到zedboard的/usr/lib 這個文件夾下面即可運行了:

製作鏡像過程:

圖4

至此就將opencv的庫移植好了,只需要掛載到板卡里面就OK啦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章