一、银河麒麟下安装OPenCV基础库

1、准备工作

在/usr/local/下新建一个ffmpeg文件夹

mkdir /usr/local/ffmpeg

2、安装nasm

nasm下载链接如下:

https://www.linuxfromscratch.org/blfs/view/8.2/general/mercurial.html

进入网址后,界面如下:

先点击右上角Next,到nasm-2.13.03的页面,再选择红框选中区域,下载nasm

下载完成后进入到下载目录执行下面的操作:

tar -xvf nasm-2.13.03.tar.gz

cd nasm-2.13.03/

./configure

make –j8

make install

执行上述过程中make时可能会报错,错误结果如下

./include/nasmlib.h:194:1: error: ‘pure’ attribute on function returning ‘void’ [-Werror=attributes] 194 | void pure_func seg_init(void);

这是由于gcc版本过新,解决方案如下

vim ./include/nasmlib.h

在vim编译器中找到大概193行位置,对下面一行代码进行注释

void pure_func seg_init(void);

然后重新make,再执行make install,完美解决。输入下面的命令,查看nasm版本号,打印出来表示安装成功。

nasm -verison

3、安装yasm

官网下载链接Index of /projects/yasm/releases/

​​

如上图红框所示,下载相应的版本

将下载后的文件解压到/usr/local/ffmpeg文件夹内,主要操作如下:

cd /usr/local/ffmpeg

tar -xvf yasm-1.2.0.tar.gz

cd yasm-1.2.0/

./configure –build=arm-linux

make –j8

make install

最后安装成功后可以使用如下命令查看

yasm –version

4、安装x264

官网链接如下

https://www.videolan.org/developers/x264.html

进去之后界面如下

点击红框选中位置进行下载,同样,下载后放入/usr/local/ffmpeg文件夹内进行解压等后续操作:

tar -xvf x264-master.tar.bz2

cd x264-master

./configure --enable-shared

make

make install

安装完成后同样可以使用下面命令进行测试

x264 --version

出现下面界面表示安装成功

5、安装fdk-aac-0.1.6

源码包下载地址:https://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.6.tar.gz

tar -xvf fdk-aac-0.1.6.tar.gz

cd fdk-aac-0.1.6.tar.gz

./configure

make –j8

sudo make install

6、安装Speex

sudo apt install speex

7、安装pkg-config

sudo apt install pkg-config

8、安装zlib1g

sudo apt install zlib1g-dev

结果: zlib1g-dev : 依赖: zlib1g (= 1:1.2.11.dfsg-2kylin1) 但是 1:1.2.12.1-1+eagle 正要被安装,这里可以看到是因为有一个zlib1g正在被安装,所以才会产生的冲突。

将zlib1g降级就好了呀!

sudo apt install zlib1g=1:1.2.11.dfsg-2kylin1

9、安装libgtk2.0

sudo apt-get install libgtk2.0-dev

根据提示依赖项依次安装

10、安装ffmpeg

(1)、下载源码

首先去官网下载ffmpeg,链接如下

http://ffmpeg.org/download.html#build-linux

进去之后按照下面提示操作

2)、编译安装

下载之后放入/usr/local/ffmpeg文件夹内

然后依次执行下面步骤

tar -xvf ffmpeg-4.4.2.tar.xz

cd ffmpeg-4.4.2

./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-libx264 --enable-gpl

make -j8

make install -j8

上面执行完成后,安装基本算是成功了,至于为什么没全成功,后面还需要再进一步配置方可使用。

(3)、环境配置

配置过程如下

配置1

cd /usr/local/ffmpeg/

查看该目录下是否包含下面的几个文件目录

bin目录中包含了ffmpeg的二进制文件

include目中包含了编程需要引入的头文件目录

lib是编译好的库文件目录

share是文档目录

配置2

cd /usr/local/ffmpeg/bin

./ffmpeg -version

一般情况下会看到下图的结果

说明至此,ffmpeg真的安装成功了

如果,出现特殊情况,那就是报错了,不要慌,继续执行下面

配置3

vi /etc/ld.so.conf.d/ffmpeg.conf

可能是一个新文件。如果不是就在文档末尾添加下面一句话

/usr/local/ffmpeg/lib

保存退出,使用ldconfig使得配置生效

ldconfig

修改/etc/ld.so.conf

目的是使用ffmpeg库的时候,能让编译器找到我们的库,因为编译器默认找/usr/lib,而不是/usr/local/lib

sudo vim /etc/ld.so.conf

在文件中添加 /usr/local/lib

在文件中添加 /usr/local/ffmpeg/lib

在 /etc目录下 sudo ldconfig

添加环境变量

目的是为了能使用ffplay ,ffprobe, ffmpeg,而不用每次都到ffmpeg目录下面./运行

最后,再执行配置2的语句,此时应该出现配置2 的截图了,说明至此安装完毕。

安装后添加环境变量的问题

sudo vim /etc/profile

在最后面加上这两行  最好不要复制

export HBASE_HOME=/usr/local/ffmpeg

export PATH=$PATH:/usr/local/ffmpeg/bin

执行source /etc/profile  命令刷新配置

测试:ffmpeg -version

问题

编译ffmpeg时,在ffmpeg目录执行./configure … 之后,没有修改config.h文件,这样也编译不出ffplay来。解决办法是进入到 ffmpeg 目录下,打开 config.h文件找 FFPLAY 关键字,将其后面的 0 修改为 1,保存并退出该文件。在当前目录下执行 make && sudo make install。注意,修改 config.h文件后,不要再执行./configure …了,否则config.h中的值又都恢复为原来的值了

测试

如果遇到ffplay不能播放的问题

ffplay 不能播放 Could not initialize SDL - No available video device (Did you set the DISPLAY variable?)

sudo apt-get install libx11-dev

sudo apt-get install xorg-dev

重新进入SDL2-2.0.14目录

make clean

./configure

make -j4

sudo make install

当然,到此,我们还没有对安装进行实际测试,不确定安装后是否能达到预期的效果,为此,本文专门使用了一个mp4视频进行了测试,将mp4转换为avi格式,测试步骤和结果如下,此处截图时转换后的格式为mp4,后面命令中进行了修改

首先,查看一下原视频,格式为mp4,大小为17507051,位置在桌面,名称叫test.mp4,为了方便测试,可以将该文件拷贝到/monchickey/ffmpeg/bin目录下。

然后在/monchickey/ffmpeg/bin目录下执行下面的命令

./ffmpeg -i test.mp4 -f psp -r 29.97 -b 768k -ar 24000 -ab 64k -s 320*240 destination.avi

此时你会看到下面的运行界面

​​​​​​​

紧接着是这样的画面

​​​​​​​终于通过实际的测试了,等待程序执行完成之后,会发现bin目录下多了一个destination.avi文件

​​​​​​​

​​

可以看到后,格式转换后,文件的大小发生了变化,打开视频后发现与原视频效果差不多。

常用参数

#ffmpeg常用参数的介绍

#-i 指定要转换视频的源文件

#-s 视频转换后视频的分辨率

#-vcodec 视频转换时使用的编解码器

#-r 视频转换换的桢率(默认25桢每秒)

#-b 视频转换换的bit率

#-ab 音频转换后的bit率(默认64k)

#-acodec 制度音频使用的编码器

#-ac 制定转换后音频的声道

#-ar 音频转换后的采样率

./ffmpeg -i source.mp4 -f psp -r 29.97 -b 768k -ar 24000 -ab 64k -s 320*240 destination.mp4

需要的自取,上面使用的参数命令可以对照命令参数详情自己理解。

二、银河麒麟下移植OpenCV

1、opencv下载链接

Releases - OpenCV

2、配置opencv,可跳过

下载完成后,解压目录

unzip opencv-3.4.6.zip

首先,修改一个文件,不然安装过程中会报错

vim 你的路径/opencv-3.4.6/modules/videoio/src/cap_ffmpeg_impl.hpp

若没有则跳过

然后加入下面三句宏定义

#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)

#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER

#define AVFMT_RAWPICTURE 0x0020

3、编译opencv

一、x86_arm交叉编译

1)、通过cmake-gui安装

1、安装cmake-gui

sudo apt-get install cmake-gui

在源码目录下

mkdir /usr/local/opencv-3.4.6

mkdir build

cd build

2、安装完成后运行:

sudo cmake-gui

3、然后会弹出CMake的图形化界面,在上方的两个路径里面,选择好代码所在文件夹的路径和要安装的路径。

说明:Where is the source code对应opencv的文件夹,Where to build the binaries对应opencv存放编译好的配置文件等信息的文件夹(刚才创建的build文件夹)

​​​​​​​4、交叉编译

​​​​​

注意:Linux要大写首字母,不能写成linux。Target Root代表标准库与头文件的搜索起始位置,可以理解为对应交叉编译工具的根目录,下图中的工具链是:

C:/usr/local/cross-arm/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc

C++:/usr/local/cross-arm/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++

Target Root:/usr/local/cross-arm/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/

​​​​​​​ ​​​​​​​

勾选Advanced配置zlib路径,find / -name zlib.h查看zlib.h是否在那个目录存在

/usr/local/opencv-3.4.6-arm/opencv-3.4.6/3rdparty/zlib/

​​​​​​​ ​​​​​​​

5、编译

sudo make –j8

可能报错,参考百度解决

错误1:undefined reference to ‘png_riffle_palette_neon’

解决1:

在build目录下:vi ../3rdparty/libpng/pngpriv.h大概131行位置

/*#  if (defined(__ARM_NEON__) || defined(__ARM_NEON)) && \*/

如上所示,把上面的一行注释掉,增加下面一行。再次make即可

#if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) &&\

defined(PNG_ALIGNED_MEMORY_SUPPORTED)

6、安装

sudo make install

7、环境变量

参考2、其他平台配置

二、其他平台

1)、通过cmake-gui安装

1、安装cmake-gui

sudo apt-get install cmake-gui

在源码目录下

mkdir /usr/local/opencv-3.4.6

mkdir build

cd build

2、安装完成后运行:

sudo cmake-gui

3、然后会弹出CMake的图形化界面,在上方的两个路径里面,选择好代码所在文件夹的路径和要安装的路径。

4、点击左下方的Configure按钮,选择Unix Makefiles,选择Use default native compilers(默认),然后点击Finish

5、需要下载一些文件,要等待一段时间。然后CMake即载入默认配置,如下图所示:

6、这里需要对两个地方进行修改:

(1)在CMAKE_BUILD_TYPE 值处输入RELEASE,其他保持不变(如果已经存在就不必修改)。

下方的CMAKE_INSTALL_PREFIX显示了默认的安装目录,生成makefile文件最后执行 make install时就会安装到这个目录,这里可以根据个人需求更改。

(2)在OPENCV_EXTRA_MODULES_PATH处,选择输入目录(单击这一行后方空白处即可选中)

(3)然后选择opencv_contrib-3.2.0文件夹中的modules文件夹,注意,不是只选中opencv_contrib-3.2.0文件夹就好了,需要选中里面的modules文件夹!    如下图所示,然后点Choose。

注:OPENCV_EXTRA_MODULES_PATH 是用来指定要编译的扩展模块,其中包括OpenCV_contrib模块。

7、点击Generate生成配置文件,这一步应该比较快就完成了。

8、接着,在build目录下打开终端,输入

sudo make -j8

sudo make install

2)、shell指令安装

mkdir build

cd build

cmake –D OPENCV_GENERATE_PKGCONFIG=ON –D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.4.6 -D WITH_FFMPEG=ON –D BUILD_opencv_world=ON  -D WITH_GTK=ON ..

上面这个cmake命令很重要,尤其是OPENCV_GENERATE_PKGCONFIG=ON,这个很重要,不写安装完成后会出现很多问题。

cmake结束后,继续执行下面的命令

make -j8

make install

至此,opencv安装结束

4、环境变量配置

打开QT运行的时候,大概率报错。

error while loading shared libraries: libopencv_core.so.3.3: cannot open shared object file: No such file or directory

不要慌,还有解决方案,如下

sudo vim /etc/ld.so.conf

在include那句话下面加入

/usr/local/lib/

下面是环境变量的配置,配置环境变量需谨慎,一定要仔细,不然会导致系统瘫痪。

vim /etc/ld.so.conf.d/opencv.conf

打开文件后输入/usr/local/opencv-3.4.6/lib,并保存退出

然后在终端执行

sudo ldconfig

vim /etc/profile

在末尾加入

export PATH=$PATH:/usr/local/opencv-3.4.6/bin

export PATH=$PATH:/usr/local/opencv-3.4.6/

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

source /etc/profile

5、opencv的测试

ldconfig -v | grep opencv

输入命令:

pkg-config --cflags opencv

pkg-config --libs opencv

如果没有出错,说明安装成功

三、OpenCV使用问题

1、imshow无法使用

问题:

imshow 无法使用, 会出现如下警告. 这是因为python-opencv没有编译gtk, 网上的解决方法可能会推荐你重新编译什么的, 太过麻烦, 也不一定能解决.
cv2.error: OpenCV(4.1.0) /io/opencv/modules/highgui/src/window.cpp:627: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'

解决:

卸载全部其他python版本的opencv

# 首先看看系统上是否安装了opencv

# 如果你使用了 conda 环境, 用如下命令列出全部的opencv包

conda list opencv

# 注意: conda列出来的包, 每行末尾有pypi的要通过pip卸载, 没有pypi的通过conda卸载

# 如果没有conda, 那就用pip 看一下

pip list | grep opencv

# conda list opencv 的结果如下:

# 然后就能看到装过的各种版本的opencv, 卸载这些opencv

# conda 卸载参考

conda uninstall xxx-opencv-xxx

# pip 卸载参考, 在我上面这张图中, 执行:

pip uninstall opencv-contrib-python

安装opencv,注意其他的opencv一定要先卸载干净,到之前的/usr/local/opencv-3.4.6/opencv-3.4.6/build文件夹下

make uninstall

pip3 install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple​​​​​​​

等待下载安装,然后重新编译安装opencv。

银河麒麟V10系统+飞腾CPU交叉编译OpenCV相关推荐

  1. 银河麒麟V10系统+飞腾CPU交叉编译安装Qt-5.15.2

    银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2 一.准备工作 1.下载qt源码包 下载网址:https://download.qt.io/archive/qt/ 在任意空闲位置新建文件夹,并 ...

  2. 银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2

    银河麒麟V10系统+飞腾CPU编译安装Qt-5.15.2 一.准备工作 1.下载qt源码包 下载网址:https://download.qt.io/archive/qt/ 在任意空闲位置新建文件夹,并 ...

  3. 基于ARM64银河麒麟V10系统(PK体系)适配安装Ambari2.7.3+HDP3.1

    引言 目前市场上主流的大数据平台以CDH和HDP两种为主,而两种大数据平台都是基于Apache原生态版本改进的,HDP版本的更贴近于原生态版本,开源率100%,基本上支持所有的开源大数据组件.CDH版 ...

  4. .NET 6应用程序适配国产银河麒麟V10系统随记

    最近想在麒麟系统上运行.NET 6程序,经过一番折腾最终完成了,简单记录一下. 目标系统: CPU: aarch64架构(ARM64) 操作系统:银河麒麟V10高级服务器系统 银河麒麟V10系统(以下 ...

  5. CRTD--有关于intel芯片组和BCM4360网卡适配银河麒麟V10系统(适用于macbook)

    在intel芯片组上安装银河麒麟V10系统存在问题: 一开始登录界面瞬间从有亮度到亮度最低,屏幕变黑,当登录进去时,进入设置勉强看到亮度为100%.据分析,是此系统默认调光为系统亮度而不是intel_ ...

  6. 银河麒麟V10(飞腾2000+ ARM)环境下构建达梦V8数据库容器镜像

    1.在银河麒麟V10(飞腾2000+ ARM)设备下,先下载一个镜像,我这里选择了centos: docker pull centos:centos7.9.2009 2.启动一个容器: sudo do ...

  7. 银河麒麟V10系统 syslog和kern.log文件过大问题解决,定时清理日志文件

    文章目录 1. 新建clear_log.sh脚本文件 2. 设置cron任务 3. 解决不执行的方法 需求: 在使用银河麒麟V10系统时,/var/log/kern.log 和 /var/log/sy ...

  8. 【国产化系列】银河麒麟V10系统上升级gcc版本

    DATE: 2021.10.15 文章目录 1.前言 2.参考 3.gcc源码下载 4.gcc7.5.0安装步骤 4.1.安装依赖 4.2.configure 4.3.make 1.前言 银河麒麟V1 ...

  9. 银河麒麟V10系统无法调用达梦数据库图形化工具的解决办法

    近期,在部署及使用达梦数据库时,发现了无法调用图形化工具界面的问题,首先先确认了图形化服务是正常的,使用root用户可以正常调用图形化界面,但使用dmdba却无法调用,在经过一段时间的尝试后,终于发现 ...

最新文章

  1. Struts 2(八):文件上传
  2. .NET Core 中的路径问题
  3. Python list 数据类型:列表
  4. 第二阶段--个人冲刺--第十天
  5. 谁说数学没有用?披着小学数学外衣的,经典程序员面试题!
  6. mysql实例怎么复制_Mysql实例MySQL数据库复制概论
  7. 禅道的基本使用(创建项目、维护部门、用户、产品、提出需求、创建测试用例等)
  8. Java运算符(Operator)之 算数运算符(ArithmeticOperator)
  9. RabbitMQ 高可用之镜像队列
  10. sds数据结构,Simple Dynamic String,简单动态字符串
  11. ios 视频播放器:AVPlayer(附:seektotime精准定位)
  12. iOS Gif分解与展示
  13. Visual studio的中英文切换
  14. Android 中Goolgle 相关服务的移植[转]
  15. 激活win10专业版最简单的方法
  16. [AutoVue开发手册]第二篇——AutoVue之Applet参数列表
  17. pta中java编程题_多文件编程题
  18. 2017ACM ICPC Asia Regional-Daejeon H-Rock Paper Scissors[ FFT]
  19. GAMES101现代计算机图形学入门——几何表示之曲线与曲面
  20. 一个SQL获取某股票连续上涨的天数

热门文章

  1. MAGIX Video Pro X12中文版
  2. 机器学习-python等开发工具-安装篇
  3. 对话 ONES 联合创始人兼 CTO 冯斌:技术管理者如何打造一支自驱型团队?
  4. BootStrap中的粗体斜体以及强调
  5. java deepcopy_JAVA 深层拷贝 DeepCopy的使用详解
  6. 编程语言专题《开发篇,交换*p1和*p2的值中常犯错误》
  7. txt 转 pdf 不乱码
  8. Ubuntu配置NFS
  9. 2023年6月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】
  10. Android之数据持久化技术