軟硬件清單
SDSoC
Zybo Z7
包含Linux內(nèi)核+根文件系統(tǒng)的平臺(tái)
裝有Linux系統(tǒng)的計(jì)算機(jī)
獲取OpenCV
這一步你至少可以有兩個(gè)選擇,一種是下載并交叉編譯庫(docs.opencv.org/2.4/doc/tutorials/introduction/crosscompilation/arm_crosscompile_with_cmake);第二種是獲取一個(gè)已經(jīng)交叉編譯好的庫。在這一教程中,我們事先已經(jīng)在SDSoC安裝文件夾中建立好了OpenCV 2.4.5版本。
修改平臺(tái)
這里我們需要將編譯好的庫添加到你想要用于項(xiàng)目的SDSoC平臺(tái)的根文件系統(tǒng)中。在這步操作之后,可執(zhí)行文件(你的應(yīng)用程序)將能夠加載庫。 在Zybo Z7平臺(tái)中使用的文件系統(tǒng)鏡像類型是initramfs。如果你手頭的是另一種鏡像類型,你可以在Xilinx wiki上得到更多的所需信息:+and+Modify+a+Rootfs
3.1 將根文件系統(tǒng)復(fù)制到臨時(shí)文件夾中
將位于平臺(tái)的啟動(dòng)文件夾中名為“uramdisk.image.gz”的存檔復(fù)制黏貼到一個(gè)臨時(shí)文件夾中。打開終端,并進(jìn)入該文件夾。
3.2 去掉U-BOOT頭文件以獲得CPIO存檔
dd if=uramdisk.image.gz bs=64 skip=1 of=ramdisk.gz
3.3 將新的CPIO存檔壓縮到一個(gè)新創(chuàng)建的文件夾中
mkdir my_root
gunzip -c ramdisk.gz | sh -c ‘cd my_root/ && sudo cpio -i’
3.4 復(fù)制庫與頭文件(-P保存鏈接)
sudo cp -p /opt/Xilinx/SDSoC/2015.4/SDK/2015.4/data/embeddedsw/ThirdParty/opencv/lib/* my_root/lib/
sudo cp -r /opt/Xilinx/SDSoC/2015.4/SDK/2015.4/data/embeddedsw/ThirdParty/opencv/include/* my_root/usr/include/
3.5 壓縮到CPIO和GUNZIP
sudo sh -c ‘cd my_root/ && find 。 | cpio -H newc -o’ | gzip -9 》 my_ramdisk.image.gz
3.6 添加U-BOOT頭文件
mkimage -A arm -T ramdisk -C gzip -d my_ramdisk.image.gz my_uramdisk.image.gz
這里需要確保文件的權(quán)限設(shè)置為755:
sudo chmod 755 。/my_uramdisk.image.gz
3.7 在平臺(tái)中更換新創(chuàng)建的鏡像
cp 。/my_uramdisk.image.gz /pathToZyboPlatform/boot/uramdisk.image.gz
在SDSoC中創(chuàng)建并配置一個(gè)新項(xiàng)目
4.1 添加包含路徑
創(chuàng)建一個(gè)新項(xiàng)目,選擇你修改后的平臺(tái),然后選擇你想要使用Linux。在project explorer(左側(cè)面板)中右鍵單擊項(xiàng)目,然后點(diǎn)擊屬性。 進(jìn)入“C/C ++ build” - 》“設(shè)置” - 》 “SDS ++編譯器” - 》“目錄”,為所選的“build/debug/estimate配置”添加OpenCV的包含路徑(/opt/Xilinx/SDSoC/2015.4/SDK/2015.4/data/embeddedsw/ThirdParty/opencv/include),如下圖所示:
4.2 鏈接庫
完成后,轉(zhuǎn)到SDS ++ linker‘s configuration,在“庫”下,添加要在項(xiàng)目中使用的庫及其所在的路徑(我這里是:/opt/Xilinx/SDSoC/2015.4/SDK/2015.4/data/embeddedsw/ThirdParty/opencv/lib)
4.3 添加-RPATH-LINK
最后,你需要指定路徑,使得鏈接器能夠搜索OpenCV所需的依賴關(guān)系(libs)。 轉(zhuǎn)到SDS ++linker configuration,在“Miscellaneous” - 》“Linker Flag”下添加以下行(-Wl,-rpath-link = / opt / Xilinx / SDSoC / 2015.4 / SDK / 2015.4 / data / embeddedsw / ThirdParty / opencv /LIB)。 -Wl選項(xiàng)向工具鏈表明選項(xiàng)-rpath-link = 。。。將被提供給鏈接器。
進(jìn)行測試
到這里,我們就要進(jìn)行本文中最令人興奮的部分:測試! 以下代碼將對(duì)一張圖像進(jìn)行FAST特征點(diǎn)檢測:
創(chuàng)建你的程序,完成之后將“sd_card”文件夾中的內(nèi)容復(fù)制到目標(biāo)SD卡中,這里不要忘記在根目錄下添加一個(gè)測試圖像(有興趣嘗試的朋友,可以點(diǎn)擊閱讀原文,獲取本教程所使用的圖像源文件)。
boot操作完成后,使用以下命令在目標(biāo)上運(yùn)行可執(zhí)行文件:
cd /mnt
。/00_ocv_helloworld.elf Buildings.jpg ocv.jpg
如果一切順利的話,則可執(zhí)行文件會(huì)生成一個(gè)輸出圖像“ocv.jpg”,如下所示:
總結(jié)
我們將構(gòu)建的庫添加到SDSoC平臺(tái)中使用的Linux根文件系統(tǒng)中。然后,我們基于這個(gè)新的SDSoC平臺(tái)配置了一個(gè)新的項(xiàng)目,其中包含正確的包含路徑和鏈接。
到這里,你就可以隨意使用OpenCV啦!
評(píng)論
查看更多