zedboard中使用opencv對視頻進行處理

這個過程非常坎坷

之前在PC上面編寫好了opencv處理視頻的程序,準備移植到zedboard上面

可是出現了一個看上去很簡單的錯誤:視頻文件無法打開

剛開始的想法是移植一個視頻庫就好了

於是開始上網找資料

其中查到了“習之北”的一篇博客,引用了一篇英文的blog,那篇blog講的是在linux下移植opencv,對視頻進行處理。

當時沒細想,只是感覺看上去挺靠譜的,就開始一步一步走了下來

可是沒有注意到他即使是在linux環境下移植,但依然是x86的平臺,而我的目標平臺是ARM

所以不光浪費了一天的時間,而且把自己電腦的編譯鏈給弄得亂七八糟

到最後只好系統全部重裝


然後參考教程

http://xilinx.eetrend.com/blog/4491

全部重新配置,所有庫的版本和步驟、甚至文件路徑都嚴格按照文章裏面要求的來,終於把opencv編譯通過了

編譯通過之後就是製作opencv鏡像

具體過程(可以參考我的另外一篇blog)是
(製作之前先把libstdc++.so.6和libz.so.6放進去)
cd ${opencv的lib}
dd if=/dev/zero of=opencv_lib.img bs=1M count=15
mkfs.ext2 -F opencv_lib.img
tune2fs opencv_lib.img -i 0 #取消磁盤自檢
chmod go+w opencv_lib.img
mount opencv_lib.img -o loop /mnt #得到的空鏡像掛載到/mnt(先確定/mnt下沒有別的文件!!)
cp -rf ${opencv的lib} /mnt
  如cp -rf /home/zed/opencv/opencv-2.4.8/install/lib /mnt
chmod go-w opencv_lib.img
umount /mnt

製作好鏡像之後開始對程序進行交叉編譯

我之前的編譯指令是arm-xilinx-linux-gnueabi-g++ -I/home/zed/opencv/opencv-2.4.8/install/include/opencv -I/home/zed/opencv/opencv-2.4.8/install/include/opencv2 -I/home/zed/opencv/opencv-2.4.8/install/include -L/home/zed/opencv/opencv-2.4.8/install/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann  -lopencv_gpu -lopencv_nonfree -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_videostab -lstdc++ -fpermissive -o video ./kaopu.c


但是現在添加了其他的庫以後系統開始報錯

提示找不到zlib這個庫,打開文件夾查看,非常確定zlib在它應該在的地方,那是什麼原因呢?

原來是我之前沒有指定把zlib包含進去,所以要修改一下交叉編譯的指令

arm-xilinx-linux-gnueabi-g++ -I/home/zed/opencv/opencv-2.4.8/install/include/opencv -I/home/zed/opencv/opencv-2.4.8/install/include/opencv2 -I/home/zed/opencv/opencv-2.4.8/install/include -L/home/zed/opencv/opencv-2.4.8/install/lib -lz -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann  -lopencv_gpu -lopencv_nonfree -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_videostab -lstdc++ -fpermissive -o video ./kaopu.c

如果還是提示找不到jpeg之類的庫,按照同樣的方法添加到編譯指令裏面就好了


但是問題是編譯出來的程序還是打不開視頻。。。

希望今天能解決吧

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