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啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值