海思移植opencv+車輛檢測
1.確保ubuntu能上網
2.安裝cmake
代碼: 全選
sudo apt-get install cmake-gui
3.下載OpenCV2.4.9 Linux版源碼,不要用最新的3.0.0
http://opencv.org/downloads.html
4.解壓opencv源碼
代碼: 全選
unzip opencv-2.4.9.zip
5.創建一個build目錄用于編譯和一個output目錄用于存放編譯完成后的海思平臺的opencv:
代碼: 全選
xlab@xlab-dev:~/zhouhua/opencv/opencv-2.4.9$ ls
3rdparty? ?? ???LICENSE? ? apps? ?data??include? ? modules? ? samples
CMakeLists.txt??README.md??cmake??doc? ?index.rst??platforms
xlab@xlab-dev:~/zhouhua/opencv/opencv-2.4.9$ cd ..
xlab@xlab-dev:~/zhouhua/opencv$ ls
build??opencv-2.4.9??opencv-2.4.9.zip??output
xlab@xlab-dev:~/zhouhua/opencv$ mkdir build
xlab@xlab-dev:~/zhouhua/opencv$ mkdir output
6.執行cmake-gui
代碼: 全選
xlab@xlab-dev:~/zhouhua/opencv/opencv-2.4.9$ cmake-gui
點擊Browse Source選擇~/zhouhua/opencv/opencv-2.4.9
點擊Browse Build選擇~/zhouhua/opencv/build
然后點擊Configure
此時出現的對話框選擇最后一項:Specify options for cross-compiling
下一步
Operating System填寫arm-hisiv100nptl-linux
C填寫arm-hisiv100nptl-linux-gcc
C++填寫arm-hisiv100nptl-linux-g++
下一步,然后等待Configuration done
然后在出現的列表中修改CMAKE_INSTALL_PREFIX為~/zhouhua/opencv/output
然后點擊Generate
等待Generation done
即可關閉cmake軟件。
7.進入build目錄執行make
代碼: 全選
xlab@xlab-dev:~/zhouhua/opencv/build$ make
提示出錯:
代碼: 全選
../../lib/libopencv_core.so: undefined reference to `pthread_once'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_lock'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_unlock'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_init'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_trylock'
../../lib/libopencv_core.so: undefined reference to `pthread_spin_destroy'
修改CMakeCache.txt大約200行處
//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING= -lpthread -lrt
繼續make
可能出現如下錯誤
代碼: 全選
CMake Error at /home/xlab/zhouhua/opencv/opencv-2.4.9/cmake/cl2cpp.cmake:50 (string):
string does not recognize sub-command MD5
make[2]: *** [modules/ocl/opencl_kernels.cpp] Error 1
make[1]: *** [modules/ocl/CMakeFiles/opencv_ocl.dir/all] Error 2
make: *** [all] Error 2
刪除/home/xlab/zhouhua/opencv/opencv-2.4.9/cmake/cl2cpp.cmake的第50行的內容即可。
繼續make
完成后執行make install
代碼: 全選
xlab@xlab-dev:~/zhouhua/opencv/output$ ls
LICENSE??bin??include??lib??share
8.得到了include和lib目錄就可以編寫程序了,來試試最常用的車輛檢測吧
編寫如下代碼
代碼: 全選
[cpp] view plain copy
#include"cv.h"
#include"highgui.h"
#include"stdio.h"
/******************fortime?mesurement*************************/
#include
structtimeval?tpstart,tpend;
unsigned?longtimeuses;
voidtimeRec()
{
gettimeofday(&tpstart,0);
}
int?timeRep()
{
gettimeofday(&tpend,0);
timeuses=(tpend.tv_sec-tpstart.tv_sec)*1000000+tpend.tv_usec-tpstart.tv_usec;
printf("use?time:%uus\n",timeuses);
return?timeuses;
}
/********************end**************************************/
int?main(intargc,?char*?argv[])
{
IplImage*?img=?NULL;
CvMemStorage*?storage?=cvCreateMemStorage(0);
CvHaarClassifierCascade*cascade?=?cvLoadHaarClassifierCascade("./model.xml",cvSize(24,24));
//CvHaarClassifierCascade*?cascade?=(CvHaarClassifierCascade*)cvLoad("./lbpcascade_frontalface.xml",?0,0,?0);
CvSeq*?faces;
//加載圖像
img?=?cvLoadImage(argv[1],?0);
printf("img?w=%d?h=%d\n",img->width,?img->height);
//檢測并計時
timeRec();
faces?=?cvHaarDetectObjects(img,cascade,??storage,?1.1,?3,?0,cvSize(24,24)?);
timeRep();
if?(faces->total?==?0){
printf("no?face!\n");
}
printf("car=?%d\n",?faces->total);
//釋放內存
cvReleaseImage(&img);
printf("car?detected!?car.jpg!\n");
}
編譯成功,然后拷貝車輛分類器文件過來。
再找個圖片過來,我這里就用car.jpg了。
將/root/jiang/OpenCV/output/lib下的libopencv_imgproc.so、libopencv_objdetect.so、libopencv_highgui.so和libopencv_core.so復制到u盤,將u盤中這4個動態庫做軟連接庫到/lib目錄下。
代碼: 全選
ln -s /mnt/udisk/libopencv_imgproc.so /lib/libopencv_imgproc.so
ln -s /mnt/udisk/libopencv_objdetect.so /lib/libopencv_objdetect.so
ln -s /mnt/udisk/libopencv_highgui.so /lib/libopencv_highgui.so
ln -s /mnt/udisk/libopencv_core.so /lib/libopencv_core.so
備注:
刪除軟鏈接:
rm -rf ?/lib/libopencv_core.so 注意不是rm -rf ?/lib/libopencv_core.so/
然后到car所在的/mnt/udisk目錄去執行即可:
# ./car car.jpg
img w=686h=398
use time:18323188us
car = 5
cardetected! in car.jpg!
OpenCV 交通智能體
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。