linux开发板,交叉编译opencv时,添加python支持

一、简介

  1. 这篇博客是之前博客在ubuntu中,交叉编译harfbuzz,freetype,opencv(包括WITH_QT),并移植到linux开发板的续写。之前交叉编译opencv时,没有添加python支持,只是交叉编译了c++版本的opencv。
  2. arm-linux开发板python交叉编译可以参考博客:在ubuntu中,基于Qt平台,调用python文件,交叉编译到嵌入式linux开发板上运行
  3. 因为python支持的opencv需要用到numpy库。交叉编译python第三方库numpy,可以参考博客:嵌入式linux开发板,通过crossenv交叉编译python第三方库numpy

二、编译过程

  1. 首先添加BUILD_opencv_python3。

在这里插入图片描述

  1. 然后在cmake中添加交叉编译的python的相关路径。这里我交叉编译的python版本是python3.6。注意删除cmake自带的python2的相关路径。

在这里插入图片描述

  1. 点击Configure按钮。

在这里插入图片描述

这里出现问题:没有识别到python的Libraries和install path。

  1. 通过阅读opencv中python3的CMakeLists.txt找到原因:
cd  /home/book/opencvarm/opencv-4.5.5/modules/python/python3
vi CMakeLists.txt

在这里插入图片描述

说明:添加python3的include路径不是使用PYTHON3_ INCLUDE_ DIR,应该使用PYTHON3 INCLUDE PATH。所以添加PYTHON3 INCLUDE PATH。

在这里插入图片描述

  1. 而对于python3的lib
cd /home/book/opencvarm/opencv-4.5.5/modules/python
vi common.cmake

在这里插入图片描述

可以看到应该使用PYTHON3 LIBRARIES,而不是PYTHON3 LIBRARY。所以添加PYTHON3 LIBRARIES。

  1. 再次Configure,识别成功。

在这里插入图片描述

  1. 另外,在make时会出现 /home/book/arm-python/bin/python3.6m: Exec format error的错误。因为这里/bin/python3执行文件是arm架构的,但是我们是在ubuntu上进行操作,所以应该换成x86_64架构的python3执行文件。所以这里换成你ubuntu上的python3执行文件即可。查找python3路径,使用命令:which python3

  2. 结果

cd /home/book/opencvarm/opencv-4.5.5/tmp/lib/python3.6/site-packages/cv2/python-3.6

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_43443861/article/details/128637170