liusir

liusir

0个粉丝

28

问答

0

专栏

2

资料

liusir  发布于  2017-02-22 14:32:22
采纳率 0%
28个问答
17166

移植opencv3.20到3519步骤

     
本帖最后由 liusir 于 2017-2-22 14:31 编辑

1.移植环境:

Ubuntu15.10 + arm-hisiv500-linux-

opencv3.20 [下载地址]([url]http://opencv.org/downloads.html[/url])

2.移植步骤:

1)安装cmake-gui

        shunzhi@ubuntu:~/hisi$ sudo apt-get install cmake-gui

2)新建一个opencv目录存放opencv-3.2.0.zip,并解压
        shunzhi@ubuntu:~/hisi$ mkdir opencv  
        shunzhi@ubuntu:~/hisi$ ls  
        opencv  opencv-3.2.0.zip  
        shunzhi@ubuntu:~/hisi$ unzip opencv-3.2.0.zip -d opencv  
        shunzhi@ubuntu:~/hisi$ cd opencv  
        shunzhi@ubuntu:~/hisi/opencv$ mkidr build _install  
        shunzhi@ubuntu:~/hisi/opencv$ ls  
        build  opencv-3.2.0  _install  


3)配置opencv编译环境
        shunzhi@ubuntu:~/hisi/opencv/opencv-3.2.0$ ls  
        3rdparty  cmake           CONTRIBUTING.md  doc      LICENSE  platforms  samples  
        apps      CMakeLists.txt  data             include  modules  README.md  
        shunzhi@ubuntu:~/hisi/opencv/opencv-3.2.0$cmake-gui  


点击Browse Source选择~/hisi/opencv/opencv-3.2.0  

点击Browse Build选择~/hisi/opencv/build  

点击Configure  


此时出现的对话框选择最后一项:Specify options for cross-compiling  

点击NEXT  

Operating System填写 arm-hisiv500-linux  

C填写arm-hisiv500-linux-gcc  

C++填写arm-hisiv500-linux-g++  


点击finish,然后等待Configuration done  

然后在出现的列表中修改CMAKE_INSTALL_PREFIX为~/hisi/opencv/_install  

点击Generate  

等待Generation done  

之后关闭cmake软件。  


4)编译opencv
        shunzhi@ubuntu:~/hisi/opencv/build$make


编译中遇到的问题:  
        ../../lib/libopencv_core.so: undefined reference to `pthread_mutex_trylock'
        ../../lib/libopencv_core.so: undefined reference to `pthread_mutexattr_settype'
        ../../lib/libopencv_core.so: undefined reference to `dlsym'
        ../../lib/libopencv_core.so: undefined reference to `pthread_mutexattr_destroy'
        ../../lib/libopencv_imgcodecs.so: undefined reference to `pthread_create'
        ../../lib/libopencv_core.so: undefined reference to `pthread_mutexattr_init'
        ../../lib/libopencv_core.so: undefined reference to `dlopen'
        ../../lib/libopencv_imgcodecs.so: undefined reference to `pthread_join'
        collect2: error: ld returned 1 exit status
        modules/core/CMakeFiles/opencv_perf_core.dir/build.make:816: recipe for target 'bin/opencv_perf_core' failed
        make[2]: *** [bin/opencv_perf_core] Error 1
        CMakeFiles/Makefile2:1341: recipe for target 'modules/core/CMakeFiles/opencv_perf_core.dir/all' failed
        make[1]: *** [modules/core/CMakeFiles/opencv_perf_core.dir/all] Error 2
        Makefile:146: recipe for target 'all' failed
        make: *** [all] Error 2


问题原因:
        cmake不认识我定义的arm-hisiv500-linux系统标记,没有加上库pthread和rt的链接选项


解决方案:修改CMakeCache.txt文件192行处  
        //Flags used by the linker.
        CMAKE_EXE_LINKER_FLAGS:STRING= -lpthread -lrt


5)安装opencv
        shunzhi@ubuntu:~/hisi/opencv/build$make install  
        shunzhi@ubuntu:~/hisi/opencv/_install$ ls  
        bin  include  lib  LICENSE  share  


3.测试:

1)编译测试程序
        shunzhi@ubuntu:~/hisi/opencv$ pwd
        /home/shunzhi/hisi/opencv
        shunzhi@ubuntu:~/hisi/opencv$ ls
        build  _install  opencv-3.2.0  test
        shunzhi@ubuntu:~/hisi/opencv$ cd test/
        shunzhi@ubuntu:~/hisi/opencv/test$ ls
        Makefile  opencv_hisi.c
        shunzhi@ubuntu:~/hisi/opencv/test$ make
        [Compiling] opencv_hisi.c ...
        shunzhi@ubuntu:~/hisi/opencv/test$ ls
        Makefile  opencv_hisi  opencv_hisi.c  opencv_hisi.o
        shunzhi@ubuntu:~/hisi/opencv/test$


2)测试程序

opencv_hisi.c
[code]#include
        #include
        #include


        int main( int argc, char** argv )
        {
            IplImage* pImg; // 声明IplImage指针
            // 载入图像,强制转化为Gray
            if( argc == 3 && (pImg = cvLoadImage( argv[1], 0)) != 0 )
            {
                        IplImage* pImg2 = cvCreateImage(cvGetSize(pImg), pImg->depth, pImg->nChannels);
                        cvCopy(pImg, pImg2, NULL);
                        cvSaveImage(argv[2], pImg2);// 把图像写入文件
                        cvReleaseImage( &pImg );    // 释放图像
                        cvReleaseImage( &pImg2 );   // 释放图像
                        printf("Success!\n");
                        return 0;
            }
                printf("Fail!\n");
                return -1;
        }[/code]

Makefile:
[code]CC = arm-hisiv500-linux-g++
DEMOTAR = opencv_hisi
DEMOOBJ = opencv_hisi.o
CFLAGS += -g -Wall -I$(shell pwd)/../_install/include
LDFLAGS += -L$(shell pwd)/../_install/lib -Wl,-Bdynamic -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lpthread -lrt
%.o: %.c
        @echo "[Compiling] $< ..."
        @$(CC) $(CFLAGS) -c $<
all: $(DEMOTAR)
$(DEMOTAR):$(DEMOOBJ)
        @$(CC) -o $@ $^ $(LDFLAGS)
.PHONY : clean
        clean:
        rm -rf $(DEMOOBJ) $(DEMOTAR)[/code]

4.测试结果

1)将opencv库拷贝到3519的开发板/usr/lib目录下。
        /usr/lib # ls
        libopencv_calib3d.so     libopencv_imgproc.so     libopencv_superres.so
        libopencv_core.so        libopencv_ml.so          libopencv_video.so
        libopencv_features2d.so  libopencv_objdetect.so   libopencv_videoio.so
        libopencv_flann.so       libopencv_photo.so       libopencv_videostab.so
        libopencv_highgui.so     libopencv_shape.so
        libopencv_imgcodecs.so   libopencv_stitching.so


2)开发板执行测试程序

        /mnt # ./opencv_hisi lena.jpg lena_test.jpg


注:

1)测试程序功能是将彩色图片转化为灰色图片(彩转灰)。  

2)lean.jpg文件在 ```opencv/opencv-3.2.0/samples/data/lena.jpg``` 位置。[postbg]bg4.png[/postbg]

我来回答
回答53个
时间排序
认可量排序

zhuangweiye

0个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-02-22 14:37:38
认可0
没有硬件加速的移植实际意义不大

liusir

0个粉丝

28

问答

0

专栏

2

资料

liusir 2017-02-22 15:02:55
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=45448&ptid=14266]zhuangweiye 发表于 2017-2-22 14:37[/url]
没有硬件加速的移植实际意义不大[/quote]

硬件加速移植是指的“SSE TO NEON”?

zhuangweiye

0个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-02-22 15:13:58
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=45450&ptid=14266]liusir 发表于 2017-2-22 15:02[/url]
硬件加速移植是指的“SSE TO NEON”?[/quote]

硬件是指IVE

liaojiacai

0个粉丝

3

问答

0

专栏

0

资料

liaojiacai 2017-04-19 16:33:47
认可0
您好,测试程序运行时出现“Bus error” 这是什么情况?

北京视元安防

0个粉丝

27

问答

0

专栏

2

资料

北京视元安防 2017-04-20 08:17:16
认可0
是的必须启用IVE,软跑延时太长

stupid

0个粉丝

4

问答

0

专栏

0

资料

stupid 2017-04-25 10:50:15
认可0
好东西, 顶,顶,顶!

20130911

0个粉丝

4

问答

0

专栏

0

资料

20130911 2017-06-21 17:22:42
认可0
如何启用IVE, 即将opencv与IVE联系起来,  求大神们指导

SA12009903

0个粉丝

12

问答

0

专栏

2

资料

SA12009903 2017-06-29 09:32:04
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=45448&ptid=14266]zhuangweiye 发表于 2017-2-22 14:37[/url]
没有硬件加速的移植实际意义不大[/quote]

:handshake,兄弟移植过EasyPR到板子上吗?高手!

ecomsbz

0个粉丝

22

问答

0

专栏

36

资料

ecomsbz 2017-06-29 09:39:21
认可0
IVE 怎么搞起来,有没有指导帖子。

易百纳用户15128

0个粉丝

88

问答

42

专栏

1

资料

易百纳用户15128 2017-06-29 09:42:12
认可0
好帖,出来透透气。

helphel

0个粉丝

4

问答

0

专栏

0

资料

helphel 2017-06-29 13:45:14
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=45448&ptid=14266]zhuangweiye 发表于 2017-2-22 14:37[/url]
没有硬件加速的移植实际意义不大[/quote]

完全同意。。

zhuangweiye

0个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-06-29 14:57:13
认可0
本帖最后由 zhuangweiye 于 2017-6-29 15:12 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=54520&ptid=14266]helphel 发表于 2017-6-29 13:45[/url]
完全同意。。[/quote]


在海思芯片上移植某个开源代码,目的是产品化应用,那么在普通ARM核上跑的图像处理软件的价值就很有限了

就好像应该不会有人在海思芯片上移植ffmpeg一样

不知道有没有人移植matlab :lol

其实,海思的IVE算子就是参考opencv研发的,所以理解算法还是最重要的

liusir

0个粉丝

28

问答

0

专栏

2

资料

liusir 2017-06-29 21:57:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=54482&ptid=14266]SA12009903 发表于 2017-6-29 09:32[/url]
,兄弟移植过EasyPR到板子上吗?高手![/quote]

这个没搞过,不过有移植成功的,识别率不咋地

liusir

0个粉丝

28

问答

0

专栏

2

资料

liusir 2017-06-29 21:58:37
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=54483&ptid=14266]ecomsbz 发表于 2017-6-29 09:39[/url]
IVE 怎么搞起来,有没有指导帖子。[/quote]

海思提供的直接模型导入ive跑的,参考我最新更新的帖子

liusir

0个粉丝

28

问答

0

专栏

2

资料

liusir 2017-06-29 22:01:09
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=54531&ptid=14266]zhuangweiye 发表于 2017-6-29 14:57[/url]
在海思芯片上移植某个开源代码,目的是产品化应用,那么在普通ARM核上跑的图像处理软件的价值就很有 ...[/quote]

性能问题,要么算法上优化模型,要么就提高硬件性能:lol

SA12009903

0个粉丝

12

问答

0

专栏

2

资料

SA12009903 2017-06-30 14:38:26
认可0
老铁,安装opencv的时候遇到过这个问题吗?
[ 23%] Built target libwebp
[ 27%] Built target libjasper
[ 27%] Building C object 3rdparty/libpng/CMakeFiles/libpng.dir/pngrtran.c.obj
In file included from /usr/include/math.h:426:0,
                 from /home/xinglu-shen/opencv/opencv3.2.0/3rdparty/libpng/pngpriv.h:467,
                 from /home/xinglu-shen/opencv/opencv3.2.0/3rdparty/libpng/pngrtran.c:19:
/home/xinglu-shen/opencv/opencv3.2.0/3rdparty/libpng/pngrtran.c: In function ‘png_set_alpha_mode’:
/usr/include/bits/mathinline.h:743:1: error: inconsistent operand constraints in an ‘asm’
__inline_mathcodeNP (floor, __x, \
^
make[2]: *** [3rdparty/libpng/CMakeFiles/libpng.dir/pngrtran.c.obj] 错误 1
make[1]: *** [3rdparty/libpng/CMakeFiles/libpng.dir/all] 错误 2
make: *** [all] 错误 2
很多错误,按照网上改了之后最后卡在这了,不过网上说改system.cpp不好使,有队友卡在这吗?

SA12009903

0个粉丝

12

问答

0

专栏

2

资料

SA12009903 2017-07-04 17:01:17
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=54653&ptid=14266]SA12009903 发表于 2017-6-30 14:38[/url]
老铁,安装opencv的时候遇到过这个问题吗?
[ 23%] Built target libwebp
[ 27%] Built target libjasper
...[/quote]

Cmake设置时根目录设置target错误,已解决,target那一栏空白,不要填任何路径

wuhao

0个粉丝

5

问答

0

专栏

0

资料

wuhao 2017-07-08 16:49:29
认可0
🆗 OK  OK

July

0个粉丝

2

问答

0

专栏

0

资料

July 2017-07-10 11:00:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=54531&ptid=14266]zhuangweiye 发表于 2017-6-29 14:57[/url]
在海思芯片上移植某个开源代码,目的是产品化应用,那么在普通ARM核上跑的图像处理软件的价值就很有 ...[/quote]

为什么不能移植ffmpeg呢?是否硬件性能受限?海思IVE是否就是类似ffmpeg的编解码库呢?我这里需要结合opencv开发,如何使opencv接收到mat或是iplimage类型的图片呢?

zhuangweiye

0个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-07-10 11:45:56
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=55168&ptid=14266]July 发表于 2017-7-10 11:00[/url]
为什么不能移植ffmpeg呢?是否硬件性能受限?海思IVE是否就是类似ffmpeg的编解码库呢?我这里需要结合ope ...[/quote]

没有说不能, 只是说一般脑子没进水都不会去做这事情,  即便移植了,每秒做个一帧编解码甚至几秒做一帧有什么意义,毫无竞争力, 除非ffmpeg支持海思芯片的硬件编解码器, 就现在来看显然不支持,

再次说一下我的观点, 移植opencv到海思的芯片上是没有价值的事情, 学生做作业请自便

移植opencv用来做什么?无非就是利用里面的算法来做图像处理, 那么用opencv在海思芯片上运行的速度如何呢?显然在arm核上跑的速度是无法和同样的算法在IVE上跑的速度比的, 那么用opencv产品化出来的东西有什么优势呢?

有人会说:我使用的算法, IVE没有相应算子, 但是这并不是移植opencv的理由,图像处理算法的实现并不需要opencv,就像楼主会问 “如何使opencv接收到mat或是iplimage类型的图片呢”,这就是典型的有个锤子,看什么都是钉子,理解算法才是重点

opencv比较适合用于算法开发,利用opencv在PC上根据需求和海思芯片的硬件特点来设计和验证算法才是比较合理的做法
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区