<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 有關(guān)Opencv移植和Zedboard測(cè)試的詳細(xì)介紹

          有關(guān)Opencv移植和Zedboard測(cè)試的詳細(xì)介紹

          作者: 時(shí)間:2018-08-03 來(lái)源:網(wǎng)絡(luò) 收藏

          繼上次生成了架構(gòu)的鏈接庫(kù)之后,我們要把他們拷貝到裝載有文件系統(tǒng)的SD卡中即可,在拷貝時(shí),最好是/usr/lib下

          本文引用地址:http://www.ex-cimer.com/article/201808/385309.htm

          實(shí)踐一:將那些lib拷貝到U盤里面,因?yàn)橹芭苓^(guò)demo,里面就是一個(gè)簡(jiǎn)易的linux系統(tǒng),就暫且用他試試了,正常啟動(dòng)后,掛載U盤,這些在之前都有做過(guò),mount /dev/sda1 /mnt拷貝文件夾 cp -R /mnt/lib /usr/ 結(jié)果出現(xiàn)


          提示空間不足,仔細(xì)發(fā)現(xiàn)問(wèn)題,發(fā)現(xiàn)這個(gè)ramdisk鏡像最大只能有8M,而整個(gè)lib有10.3M,肯定會(huì)提示空間不足了,在看看/usr/lib下有哪些文件


          發(fā)現(xiàn)拷貝了一些lib文件進(jìn)來(lái)。這時(shí)就想到了實(shí)踐二的方法、。

          疑問(wèn):然后還有一個(gè)就是書上的一句話,如果你使用的是ramdisk文件系統(tǒng),則需要在拷貝完Opencv鏈接庫(kù)之后需要重新壓縮出一個(gè)鏡像文件。(有待解決這個(gè)問(wèn)題)

          問(wèn)題解釋:來(lái)自于rainysky,用的系統(tǒng)是SD自帶的那個(gè)精簡(jiǎn)版的系統(tǒng),容量比較小,沒(méi)法直接將編譯的文件復(fù)制到里面,只能做一個(gè)鏡像啦。

          實(shí)踐二:想利用單板機(jī)(光盤中第九章有)中的文件來(lái)實(shí)驗(yàn)一下,單板機(jī)的系統(tǒng)時(shí)linaro的系統(tǒng),之前有一個(gè)sd卡已經(jīng)做好了分區(qū),在windows下只能讀出第一個(gè)分區(qū),第二個(gè)分區(qū)在windows下是讀不出來(lái)的。將BOOT.BIN,zImage,devicetree.dtb,zynq-zed-adv7511.dtb拷貝到第一個(gè)分區(qū),也就是FAT分區(qū)。將ubuntu-image.tar.gz在linux下拷貝到EXT4分區(qū),但是結(jié)果發(fā)現(xiàn)這個(gè)系統(tǒng)時(shí)不能正常啟動(dòng)的,是否是因?yàn)樾枰狿C的外設(shè)才能正常啟動(dòng)??(有待驗(yàn)證),現(xiàn)在只能是制作鏡像了。原來(lái)是光盤提供的BOOT.BIN文件有問(wèn)題,有待實(shí)驗(yàn)。

          實(shí)踐三:

          制作鏡像的方法:OpenCV庫(kù):

          dd if=/dev/zero of=qt_lib.img bs=1M count=80//這里的count與bs組合起來(lái)表示制作80M的鏡像,具體可以根據(jù)實(shí)際鏈接庫(kù)總的大小來(lái)設(shè)置count

          mkfs.ext2 -F cv_lib.img

          chmod go+w cv_lib.img

          mount cv_lib.img -o loop /mnt

          //cp -rf $ZYNQ_QT_INSTALL/* /mnt (看你的安裝的路徑,我的是下面的)

          cp –rf /home/xzy/Opencv2.3.1/install/* /mnt

          chmod go-w cv_lib.imgumount /mntZedboard

          測(cè)試注意交叉編輯器編譯代碼時(shí)要用-I 和-L來(lái)指定鏈接庫(kù)的位置。等下帖過(guò)來(lái)

          arm-xilinx-linux-gnueabi-g++ -I /home/xzy/OpenCV-2.3.1/install/include -I/home/xzy/OpenCV-2.3.1/install/include/opencv -L /home/xzy/OpenCV-2.3.1/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

          這里使用的是書上的edge_detecTIon.cpp。

          直接將庫(kù)文件拷貝到sd卡就可以了,然后sd卡啟動(dòng)linux之后,進(jìn)行如下操作:

          mount /dev/mmcblk0p1 /mnt/ //掛載sd卡其他部分的東西,

          ls可以看到鏡像文件

          mount /mnt/cv_lib.img /choose/a/directory/to/mount//接著下來(lái)設(shè)置動(dòng)態(tài)鏈接庫(kù)的路徑,即LD_LIBRARY_PATH環(huán)境變量export LD_LIBRARY_PATH=/usr/lib 如果是這個(gè)路徑(/usr/lib)就不用了,會(huì)自己搜索。

          前面都設(shè)置好了,運(yùn)行的時(shí)候結(jié)果出現(xiàn)error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory,經(jīng)查證,如果用這個(gè)鏡像運(yùn)行的話,會(huì)出現(xiàn)一個(gè)問(wèn)題,就是在運(yùn)行的時(shí)候找不到stdc++.so這個(gè)庫(kù),因此需要先將這個(gè)庫(kù)copy到/home/xzy/opencv-2.3.1/install/lib,源文件在交叉編譯器里面,總的命令為:cp /root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_/arm-xilinx-linux-gnueabi/libc/usr/lib/libstdc++.so* /home/xzy/opencv-2.3.1/install/lib)

          然后重新制作鏡像文件。至此名字叫opencv_lib.img,或者將這個(gè)庫(kù)掛載到/usr/lib目錄下也是可以的。我這里重新制作鏡像文件,搞定之后,掛載,運(yùn)行./edge_detecTIon_arm lena.jpg lena_edge.jpg結(jié)果出現(xiàn)的是Segmentation fault,懷疑是圖片格式的問(wèn)題,果然,換成了bmp圖像以后,./edge_detection.o ./lena.bmp ./lena_edge.bmp,出現(xiàn)的是sucessful,我就知道成功了,將生成的圖片copy到U盤,到pc機(jī)上一看 至此,opencv移植到zedboard上是成功了。




          關(guān)鍵詞: Linux ARM

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();