liusir

liusir

1个粉丝

28

问答

0

专栏

2

资料

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

移植opencv3.20到3519步骤

 

[i=s] 本帖最后由 liusir 于 2017-2-22 14:31 编辑 [/i]

[backcolor=LightBlue][p=30, 2, left][b][size=5]1.移植环境:[/size][/b] [p=30, 2, left]Ubuntu15.10 + arm-hisiv500-linux- [p=30, 2, left]opencv3.20 下载地址 [p=30, 2, left][b][size=5]2.移植步骤:[/size][/b] [p=30, 2, left][b]1)安装cmake-gui[/b] [p=30, 2, left] shunzhi@ubuntu:~/hisi$ sudo apt-get install cmake-gui [p=30, 2, left][b]2)新建一个opencv目录存放opencv-3.2.0.zip,并解压[/b] 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 [/p] [p=30, 2, left][b]3)配置opencv编译环境[/b] 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 [/p] [p=30, 2, left]点击Browse Source选择~/hisi/opencv/opencv-3.2.0
[p=30, 2, left]点击Browse Build选择~/hisi/opencv/build
[p=30, 2, left]点击Configure [/p] [p=30, 2, left]此时出现的对话框选择最后一项:Specify options for cross-compiling
[p=30, 2, left]点击NEXT
[p=30, 2, left]Operating System填写 arm-hisiv500-linux
[p=30, 2, left]C填写arm-hisiv500-linux-gcc
[p=30, 2, left]C++填写arm-hisiv500-linux-g++ [/p] [p=30, 2, left]点击finish,然后等待Configuration done
[p=30, 2, left]然后在出现的列表中修改CMAKE_INSTALL_PREFIX为~/hisi/opencv/_install
[p=30, 2, left]点击Generate
[p=30, 2, left]等待Generation done
[p=30, 2, left]之后关闭cmake软件。 [/p] [p=30, 2, left][b]4)编译opencv[/b] shunzhi@ubuntu:~/hisi/opencv/build$make[/p] [p=30, 2, left]编译中遇到的问题:
[color=DarkOrange] ../../lib/libopencv_core.so: undefined reference to pthread_mutex_trylock' ../../lib/libopencv_core.so: undefined reference topthread_mutexattr_settype' ../../lib/libopencv_core.so: undefined reference to dlsym' ../../lib/libopencv_core.so: undefined reference topthread_mutexattr_destroy' ../../lib/libopencv_imgcodecs.so: undefined reference to pthread_create' ../../lib/libopencv_core.so: undefined reference topthread_mutexattr_init' ../../lib/libopencv_core.so: undefined reference to dlopen' ../../lib/libopencv_imgcodecs.so: undefined reference topthread_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[/p][/color] [p=30, 2, left]问题原因: cmake不认识我定义的arm-hisiv500-linux系统标记,没有加上库pthread和rt的链接选项[/p] [p=30, 2, left]解决方案:修改CMakeCache.txt文件192行处
//Flags used by the linker. CMAKE_EXE_LINKER_FLAGS:STRING= -lpthread -lrt[/p] [p=30, 2, left][b]5)安装opencv[/b] shunzhi@ubuntu:~/hisi/opencv/build$make install
shunzhi@ubuntu:~/hisi/opencv/_install$ ls
bin include lib LICENSE share [/p] [p=30, 2, left][b][size=5]3.测试:[/size][/b] [p=30, 2, left][b]1)编译测试程序[/b] 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$ [/p] [p=30, 2, left][b]2)测试程序[/b] [p=30, 2, left]opencv_hisi.c [code]#include <opencv/cv.h>

include <opencv/highgui.h>

#include <stdio.h>[/p]
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]

[p=30, 2, left]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] [p=30, 2, left][size=5][b]4.测试结果[/b][/size] [p=30, 2, left][b]1)将opencv库拷贝到3519的开发板/usr/lib目录下。[/b] /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[/p] [p=30, 2, left][b]2)开发板执行测试程序[/b] [p=30, 2, left] /mnt # ./opencv_hisi lena.jpg lena_test.jpg[/p] [p=30, 2, left][b]注:[/b] [p=30, 2, left]1)测试程序功能是将彩色图片转化为灰色图片(彩转灰)。
[p=30, 2, left]2)lean.jpg文件在 opencv/opencv-3.2.0/samples/data/lena.jpg 位置。[postbg]bg4.png[/postbg]

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

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

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

liusir

1个粉丝

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

8个粉丝

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

1个粉丝

22

问答

0

专栏

36

资料

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

ebaina_

0个粉丝

82

问答

40

专栏

0

资料

ebaina_ 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

8个粉丝

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

1个粉丝

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

1个粉丝

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

1个粉丝

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

8个粉丝

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)
举报反馈

举报类型

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

详细说明

易百纳技术社区