海思Hi3519v101平台移植OpenCV
opencv是图像处理中不可或缺的库函数,而海思作为视频处理芯片,自然是支持opencv库的移植,本文参考网上的博客,以Hi3519v101的SDK为对象,编译opencv并移植。笔者先后使用海思500和600两个工具链对opencv2.4.9、opencv3.0.0和opencv3.4.2进行了编译,方法都一样,可提供借鉴。
一、opencv库下载
opencv所有版本(2/3/4,Linux/Windows)的下载地址:https://opencv.org/releases/
参考之前的博客,选择了opencv2.4.9版本(其他版本安装也一样的步骤),下载地址https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download
Opencv官网地址:https://opencv.org/releases/
二、cmake-gui安装
sudo apt-get install cmake-qt-gui
三、解压opencv
新建一个文件夹opencv,将opencv2.4.9.zip放进去,并新建build、output文件夹,解压opencv2.4.9.zip,完成后如下:
四、cmake-gui编译
输入sudo cmake-gui
点击Browse Source选择/home/username/opencv/opencv-2.4.9
点击Browse Build选择/home/username//opencv/build
然后点击Configure
此时出现的对话框选择最后一项:Specify options for cross-compiling
下一步
Operating System填写 arm-hisiv500-linux //注意,这里的工具链使用自己的
C填写arm-hisiv500-linux-gcc //注意,这里的工具链使用自己的
C++填写arm-hisiv500-linux-g++
可能出现的问题
问题1、compiler identification is unknown
The CXX compiler identification is unknown
The C compiler identification is unknown
主要是因为安装的交叉编译工具不在环境变量中,可以修改/etc/profile,添加交叉编译工具的路径,也可以点击下图的“…”,手动选择Linux编译器,比如我的编译器地址如下:/opt/hisi-linux/x86-arm/arm-hisiv500-linux/bin/arm-hisiv500-linux-
问题2、CMake Error at cmake/FindCUDA.cmake:763
CMake Error at cmake/FindCUDA.cmake:763 (if):
if given arguments:
"CUDA_VERSION" "VERSION_GREATER" "5.0" "AND" "CMAKE_CROSSCOMPILING" "AND" "MATCHES" "arm"
Unknown arguments specified
Call Stack (most recent call first):
cmake/OpenCVDetectCUDA.cmake:26 (find_package)
cmake/OpenCVFindLibsPerf.cmake:24 (include)
CMakeLists.txt:468 (include)
将WITH_CUDA的Value取消,如下
config成功后如下,修改CMAKE_INSTALL_PREFIX的路径
点击generate,完成后关闭cmake-gui
五、安装
5.1问题一
进入bulid文件夹,make进行编译,出现如下问题:
解决方法:
打开CMakeCache.txt,修改206行
CMAKE_EXE_LINKER_FLAGS:STRING= -lpthread -lrt
重新make即可。在output文件夹下有编译好的lib库,移植到海思板子底下即可。
make完成后如下
make insatll完成后如下
5.2问题二
另外,笔者在编译opencv2.4.9时没有出现以下问题,但在编译opencv3.4.2时出现以下问题
解决方法:
打开opencv-3.4.2/3rdparty/protobuf/src/google/protobuf/stubs/common.cc,并在前面添加#define HAVE_PTHREAD
即可
5.3问题三
再者,笔者在使用arm-hisiv600-linux-gnueabi工具链编译opencv时,出现如下的问题,算是把网上遇到的所有编译问题集齐了
解决方法
打开问题一说讲的CMakeCache.txt,在后缀再加上-ldl
六、opencv库移植到海思3519板子端
编译好opencv后,output目录如下
1.将库函数与头函数复制到交叉编译工具底下
sudo cp lib/* /opt/hisi-linux/x86-arm/arm-hisiv500-linux/arm-hisiv500-linux-uclibcgnueabi/lib/
sudo cp include/* /opt/hisi-linux/x86-arm/arm-hisiv500-linux/arm-hisiv500-linux-uclibcgnueabi/include/ -r
2. 编译
新建一个face.cpp源程序
/***********Author:9crk 2014-12-24*****************************/
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
/******************for time mesurement*************************/
#include <sys/time.h>
struct timeval tpstart,tpend;
unsigned long timeuses;
void timeRec()
{
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(int argc, char* argv[])
{
IplImage* img = NULL;
IplImage* cutImg = NULL;
CvMemStorage* storage = cvCreateMemStorage(0);
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad("./haarcascade_frontalface_alt2.xml", 0, 0, 0);
CvSeq* faces;
img = cvLoadImage(argv[1], 0);
timeRec();
faces = cvHaarDetectObjects(img, cascade, storage, 1.2, 2, 0, cvSize(25,25) );
timeRep();
if (faces->total == 0){
printf("no face!\n");
}
cvSetImageROI(img, *((CvRect*)cvGetSeqElem( faces, 0)));
cvSaveImage("face.bmp", img);
cvResetImageROI(img);
printf("face detected! in face.bmp!\n");
}
arm-hisiv500-linux-g++ face.cpp -I/home/username/work/opencv/output/include/opencv -lopencv_highgui -lopencv_core -lopencv_imgproc -lpthread -lrt -lopencv_objdetect -o face
编译成功如下,尽管会出现一些warning,但不影响
3.移植到海思板子端
需要准备的东西有:
1、找一张人脸图片,如lena.png
2、将opencv库自带的人脸识别分类器(output/share/OpenCV/haarcascades/haarcascade_frontalface_alt2.xml )拷到板子上
3、lib库的移植
1、sudo cp /home/username/work/opencv/output/lib/libopencv_objdetect.so ./
2、sudo cp /home/username/work/opencv/output/lib/libopencv_imgproc.so ./
3、sudo cp /home/username/work/opencv/output/lib/libopencv_highgui.so
4、sudo cp /home/username/work/opencv/output/lib/libopencv_core.so ./
移植到板子的内容如下,lib中包含上诉四个文件so文件
4.测试
将lib底下的四个so文件移植到板子的/lib底下
输入 ./face lena.png,测试结果如下
移植成功
Done!
文章来源:https://blog.csdn.net/qq_40199447/article/details/105186561?spm=1001.2014.3001.5502
- 分享
- 举报
-
浏览量:1689次2018-12-10 14:49:58
-
浏览量:2512次2020-08-17 19:39:33
-
2018-06-18 22:47:22
-
浏览量:6442次2018-06-14 22:53:53
-
浏览量:4316次2018-03-31 20:59:15
-
2018-04-04 14:06:53
-
浏览量:5767次2018-04-03 09:53:34
-
浏览量:2629次2020-08-05 20:56:37
-
浏览量:2776次2020-08-14 11:27:38
-
浏览量:2898次2018-04-03 09:48:45
-
浏览量:7279次2018-06-14 23:13:10
-
浏览量:2196次2020-08-05 21:02:35
-
浏览量:3319次2020-03-11 12:27:56
-
浏览量:851次2024-01-08 18:13:05
-
浏览量:1940次2018-04-20 10:56:24
-
浏览量:9472次2018-06-02 19:08:30
-
浏览量:3826次2018-12-19 14:02:27
-
浏览量:7422次2020-09-06 16:25:23
-
浏览量:315次2024-11-13 14:14:36
-
9篇
- OpenCV:计算机视觉的强大工具库
- 联咏Novatek发布集成DDR多媒体SoC_NT9856x对标海思3516EV200/300
- 海思,SONY芯片 (SONY,海思,镁光,OV,PIXELPLUS )
- 海思NNIE Hi3559量化部署Mobilefacenet与RetinaFace
- 上海海思校园大使招募令,第二批启动啦~~
- Hi3516DV500&&Hi3519DV500制作emmc ext4格式文件系统镜像报错问题处理
- 分享海思Hi3519V101开发板、 SOC芯片产品简介、用户指南和SDK开发包
- 海思参数调试个人经验总结
- Hi3531dv200平台移植sil9136驱动
- 海思多媒体(MPP)开发(1)——nvp6134驱动介绍
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
易木雨
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明