- 收藏
- 点赞
- 分享
- 举报
移植opencv3.20到3519步骤
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]
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片
-
2015-01-20 22:07:13
-
2016-01-29 17:28:20
-
2018-05-28 16:26:37
-
2015-06-09 11:11:23
-
2019-01-17 09:51:14
-
2015-06-06 22:07:14
-
2016-03-25 18:04:45
-
2018-06-28 14:52:58
-
2017-02-24 14:52:47
-
2015-05-12 14:05:12
-
2019-03-30 13:17:16
-
2018-12-06 08:59:33
-
2017-04-27 14:22:50
-
2019-01-26 09:46:16
-
2019-01-28 09:30:29
-
2015-01-21 09:03:33
-
2019-03-16 17:29:40
-
2015-01-19 16:54:20
-
2018-12-03 15:49:53

举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明