音视频开发4-补充 FFmpeg 开发环境搭建 -- 在windows 上重新build ffmpeg

本节的目的是在windows 上 编译 ffmpeg 源码,这样做的目的是:在工作中可以根据工作的实际内容裁剪 ffmpeg,或者改动 ffmpeg 的源码。

第一步 :下载, 安装,配置 ,运行 msys64

下载 

下载地址: https://www.msys2.org/
MSYS2 (Minimal SYStem 2)是⼀个MSYS的独⽴改写版本,主要⽤于 shell 命令⾏开发环境。同时它也 是⼀个在Cygwin(POSIX 兼容性层) 和 MinGW-w64(从"MinGW-⽣成")基础上产⽣的,追求更好的互操 作性的 Windows 软件。
MSYS2 是MSYS的⼀个升级版,准确的说是集成了panman和Mingw-64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 ⼯具链。与MSYS最⼤的区别是移植了Arch linux的软件包管理系统Pacman(其实是与Cygwin的区别)。

安装 配置

1. 下载安装MSYS2(按照官⽹安装到⾃⼰指定的⽬录下,本⼈安装于C:/msys64new)
2. 安装完成之后,先把安装⽬录下的msys2_shell.cmd中注释掉的
rem set MSYS2_PATH_TYPE=inherit 改成 set MSYS2_PATH_TYPE=inherit ,这是为了将vs的环境继 承给MSYS2。
本节测试中安装在 C:\msys64new

MSYS2可以选择msys或者MinGW-w64环境来编译,不过在msys下使⽤gcc编译出来的exe和dll依赖 msys-2.0.dll,⽽MinGW-w64下编译出来的⽂件不需要依赖这个dll,从程序的运⾏效率来看,不依赖这 个dll的程序的效率应该更⾼。所以选择MinGW-w64来编译更佳。

配置-修改pacman的源 - 在最新的msys64中已经不用改动,改动后反而有错误

pacman是⼀个软件包管理器,⽤来在MSYS2中安装软件,但是默认的国外的源下载安装包时⾮常缓慢, ⼤概只有⼗⼏⼆⼗KB的速度,⽽且还容易下载中断出错,所以需要修改为国内源,国内源可以选择中科⼤ 的源。
按照MSYS2镜像提示修改。具体如下:
编辑 /etc/pacman.d/mirrorlist.mingw32 ,在⽂件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686/

编辑 /etc/pacman.d/mirrorlist.mingw64 ,在⽂件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64/
编辑 /etc/pacman.d/mirrorlist.msys ,在⽂件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch/

运行 msys2_shell.cmd -mingw64

1. 启动命令⾏窗⼝,在窗⼝中输⼊:

在cmd模式下 进⼊msys2安装⽬录cd c:\msys64
#如果要打开msys2的mingw64窗⼝
msys2_shell.cmd -mingw64
#如果要打开msys2的msys窗⼝
#msys2_shell.cmd

2. 然后在msys2的shell中执⾏:

pacman -Sy
目的是 : 刷新软件包数据。

二 安装编译环境

gcc编译器、git等
msys2 遇到两类开发环境:
1. MSYS2 ⾃带的开发环境,安装的包叫 msys2-devel
2. MinGW-w64 的安装
17 这两者有什么区别呢?
⼀⾔以蔽之,前者编译出来的可执⾏⽂件,要依赖 MSYS2 提供的动态链接库,⽽后者不需要。下⾯详细
说明⼀下:
(1) MSYS2 下的 gcc 编译环境,编译的可执⾏⽂件要依赖于 msys-2.0.dll,这个 DLL 提供了 Linux
下编程的提供的函数和接⼝,例如 fork 函数。
这个编译环境对于编译基于 Linux 下编写的软件,是⾮常适合的。例如编译 GNU 提供的各种⼯具。例
如,你想编译最新版本的 GNU grep ⼯具,MSYS2 下的这个环境是⾮常适合的。
(2)⽤ MinGW64 的编译环境, 不再依赖于 msys-2.0.dll,如果源代码就是基于 windows 开发的,那
使⽤ MinGW 的编译环境⽐较好,编译出来的可执⾏⽂件,不⽤再依赖 MSYS 提供的动态链接库。当然,
前提是代码中不能使⽤ Linux 的东⻄,即 POSIX 的那套东⻄。

1  编译工具链

pacman -S mingw-w64-x86_64-toolchain

2  编译工具

pacman -S git
pacman -S make
pacman -S automake
pacman -S autoconf
pacman -S perl

pacman -S libtool
pacman -S mingw-w64-i686-cmake
pacman -S pkg-config
pacman -S mingw-w64-x86_64-SDL2


pacman -S mingw-w64-x86_64-yasm

编译当前最新x264时需要⽤到nasm。

pacman -S nasm

查看结果 which cl link yasm cpp

看返回结果, 没有no的结果⼀般就没问题。

3  编译第三⽅库

将下载下的放置于/home/用户名/ffmpeg下,本次用户名为Administrator,因此会放在 /home/Administrator/ffmpeg下,把第三⽅库编译的库⽂件放在 /home/Administrator/ffmpeg/build。
查看当前路径:
Administrator@DESKTOP-SU7G9P3 MINGW64 ~
# pwd
/home/Administrator

mkdir ffmpeg
cd ffmpeg

3.1 下载x264,生成动态库文件,静态库文件

git clone http://git.videolan.org/git/x264.git

cd进入到 x264 目录下
cd x264

./configure --prefix=/home/Administrator/ffmpeg/build/libx264 --host=x86_64-w64-mingw32 --enable-shared --enable-static --extra-ldflags=-Wl,--output-def=libx264.defmakemake install

⽣成libx264.lib
cp ./libx264.def /home/Administrator/ffmpeg/build/libx264/lib/

cd /home/Administrator/ffmpeg/build/libx264/lib

#若要生成64位lib文件则输入如下命令:
lib /machine:X64 /def:libx264.def
#若要生成32位lib文件则输入如下命令:
lib /machine:i386 /def:libx264.def
缘由:因为要借助mingw64来编译一个第三方库,需要编译成Windows所需的lib文件,其中执行到一条命令:lib /machine:X64 /def:libx264.def结果出现错误:bash: lib command not found最开始以为是libtool出了问题,后来发现整个msys64目录下没有lib.exe,然后就想到了Visual Studio自带的lib.exe。解决办法:把Visual Studio自带lib.exe的所在目录添加到环境变量Path当中

请注意上面是64位的,请注意要根据实际路径来添加。

添加完毕之后,记得要重启mingw64

然后使用cmd 命令,进入到C:\msys64new\home\Administrator\ffmpeg\build\libx264\lib

执行  lib /machine:X64 /def:libx264.def

3.1.1 制作3rd库

新建lib264文件夹,拷贝libx264-158.dll 到文件夹下,并命名为libx264.dll 新建include和lib目录,分别将x264.h、x264_config.h拷贝到include目录,libx264.lib拷贝到lib目录下

libx264官⽹下载
https://www.videolan.org/developers/x264.html

3.2 下载和编译fdk-aac

下载fdk-aac

cd /home/Administrator/ffmpeggit clone --depth 1 https://gitee.com/mirrors/fdk-aac.gitcd fdk-aac./autogen.sh./configure --prefix=/home/Administrator/ffmpeg/build/libfdk-aac --enable-static --enable-sharedmake -j4make install
libfdk_aac官⽹下载
https://sourceforge.net/projects/opencore-amr/files/fdk-aac/

3.3下载编译mp3

cd /home/Administrator/ffmpeggit clone --depth 1 https://gitee.com/hqiu/lame.gitcd lame./configure --prefix=/home/Administrator/ffmpeg/build/libmp3lame --disable-shared --disable-frontend --enable-static
make
make install

libmp3lame官⽹下载(选择版本>= 3.98.3
https://sourceforge.net/projects/lame/files/lame/

3.4 下载编译libvpx

cd /home/Administrator/ffmpeg
git clone --depth 1 https://github.com/webmproject/libvpx.git
cd libvpx
./configure --prefix=/home/Administrator/ffmpeg/build/libvpx --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm
make -j4
make install

4.下载和编译ffmpeg

下载 ffmpeg 源码,可以直接从ffmpeg网站上直接下载,下载后解压。
https://ffmpeg.org/releases/ffmpeg-7.0.tar.xz
cd /home/Administrator/ffmpeg
./configure \
--prefix=/home/Administrator/ffmpeg/build/ffmepg-7.0 \
--arch=x86_64 \
--enable-shared \
--enable-gpl \
--enable-libfdk-aac \
--enable-nonfree \
--enable-libvpx \
--enable-libx264 \
--enable-libmp3lame \
--extra-cflags="-I/home/Administrator/ffmpeg/build/libfdk-aac/include" \
--extra-ldflags="-L/home/Administrator/ffmpeg/build/libfdk-aac/lib" \
--extra-cflags="-I/home/Administrator/ffmpeg/build/libvpx/include" \
--extra-ldflags="-L/home/Administrator/ffmpeg/build/libvpx/lib" \
--extra-cflags="-I/home/Administrator/ffmpeg/build/libx264/include" \
--extra-ldflags="-L/home/Administrator/ffmpeg/build/libx264/lib" \
--extra-cflags="-I/home/Administrator/ffmpeg/build/libmp3lame/include"\
--extra-ldflags="-L/home/Administrator/ffmpeg/build/libmp3lame/lib"
make -j8
make install
如上在测试的时候,第一天下午到晚上,始终发生问题,提示 lame的版本要>=38.6,但是第二天就好了,原因未知,记录在案。
这时候如果我们在windows上通过cmd命令形式调用ffmpeg,会提示各种dll 找不到。

此时bin目录中的ffmpeg、ffprobe、ffplay还是没法使用的,因为缺少相关的dll,需要从%MSYS2_HOME%/mingw64/bin中拷贝,或者将%MSYS2_HOME%/mingw64/bin配置到环境变量Path中。

需要拷贝的dll有:libwinpthread-1、SDL2、zlib1.dll、liblzma-5、libbz2-1、libiconv-2、libgcc_s_seh-1、libstdc++-6、libx265、libx264-159、libfdk-aac-2  ,  libva_win32.dll

从 C:\msys64new\mingw64\bin 中拷贝数据到 C:\msys64new\home\Administrator\ffmpeg\build\ffmepg-7.0\bin

---------------------------------------------------------

三,另一种安装方案。

参考博客如下:

https://www.cnblogs.com/mjios?page=3

下载安装MSYS2

进入MSYS2官网下载安装包(我这边下载的是:msys2-x86_64-20210228.exe),然后进行安装。

安装完毕后打开命令行工具mingw64.exe

安装依赖

pacman(Package Manager)是一个包管理工具。

  • pacman -Sl:搜索有哪些包可以安装
  • pacman -S:安装
  • pacman -R:卸载
pacman -Sy
目的是 : 刷新软件包数据

# 编译工具链
pacman -S mingw-w64-x86_64-toolchain
 
pacman -S mingw-w64-x86_64-yasm
 
pacman -S mingw-w64-x86_64-SDL2
 
pacman -S mingw-w64-x86_64-fdk-aac
 
pacman -S mingw-w64-x86_64-x264
 
pacman -S mingw-w64-x86_64-x265  这个不会有build error ,但是执行的时候,提示x265.dll找不到 中的某一个路径找不到,因此也不安装了

pacman -S mingw-w64-x86_64-libmp3lame  这个好像不行,使用pacman -Sl 查找并没有libmp3lame相关的,有一个是 mingw-w64-x86_64-gimp3,但是不知道是否就是libmp3lame,这应该也是为什么在这种安装方式下,参考中的博客没有将mp3弄进去的原因


 
# 需要单独安装make

pacman -S make

关于软件包相关的默认路径:

下载目录:%MSYS2_HOME%/var/cache/pacman/pkg
安装目录:%MSYS2_HOME%/mingw64
%MSYS2_HOME%是指MSYS2的安装目录

cd /C/msys64new/home/Administrator/ffmpeg/ffmpeg-7.0


./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl  --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265

按照 如上有运行时异常,总是说libx265.dll有问题,错误如下,

这块找了好久也没有找到方案解决,因此直接 将 --enable-libx265 删除了,重新build 了一版 

./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --enable-gpl  --enable-nonfree --enable-libfdk-aac --enable-libx264 


此时bin目录中的ffmpeg、ffprobe、ffplay还是没法使用的,因为缺少相关的dll,需要从%MSYS2_HOME%/mingw64/bin中拷贝,或者将%MSYS2_HOME%/mingw64/bin配置到环境变量Path中。

需要拷贝的dll有:libwinpthread-1、SDL2、zlib1.dll、liblzma-5、libbz2-1、libiconv-2、libgcc_s_seh-1、libstdc++-6、libx265、libx264-159、libfdk-aac-2  ,  libva_win32.dll

从 C:\msys64new\mingw64\bin 中拷贝数据到 C:\msys64new\usr\local\ffmpeg\bin

总结:

将 C:\msys64new\mingw64\bin 中的相关dll 拷贝到C:\msys64new\usr\local\ffmpeg\bin

将C:\msys64new\usr\local\ffmpeg\bin 设置为环境变量

四,安装QT,以及配置QT

下载

本教程中选择5.14.2版本(从5.15版本开始是收费版本)。

  • 下载地址:Index of /archive/qt/5.14/5.14.2
  • Windows系统选择下载:qt-opensource-windows-x86-5.14.2.exe

勾选MinGW 64bit编译器(我电脑的系统是64bit)。

如果后期想阅读Qt源码,就选择勾选Qt源码。

默认已经勾选了QtCreator。

解决控制台中文乱码

工具 -> 选项

文本编辑器 -> 行为 -> 文本编码 -> 默认编码。

每次运行Qt程序,你的控制台可能都会出现以下警告信息:QT_DEVICE_PIXEL_RATIO已经过期。

Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use:QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.QT_SCREEN_SCALE_FACTORS to set per-screen DPI.QT_SCALE_FACTOR to set the application global scale factor.

解决方案:设置环境变量QT_SCALE_FACTOR为1即可。

 
#include "mainwindow.h"#include <QApplication>// 导入头文件【也可以不导入,因为<QApplication>中已经包含了<QByteArray>】
// #include <QByteArray>int main(int argc, char *argv[]) {// 通过qputenv函数设置QT_SCALE_FACTOR为1qputenv("QT_SCALE_FACTOR", QByteArray("1"));QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

集成FFmpeg到Qt项目中

在Windows中,我们最终是通过调用FFmpeg动态库(dll)中的函数来操作音视频数据,使用dll的其中一种方式是需要用到3种文件:

  • .h:头文件(Header File)
    • 包含了函数的声明
    • 通过#include去导入相应的头文件
  • .dll:动态链接库(Dynamic Link Library)
    • 包含了函数的具体实现代码
    • Windows程序会在运行过程中,动态调用dll中的函数
  • .lib.dll.a:(动态链接库的)导入库(Import Library)
    • .lib:用于MSVC编译器中
    • .dll.a:用于MinGW编译器中
    • 包含了dll中函数的入口,用于辅助找到并调用dll中的函数
    • 最终需要链接到Windows程序中(比如合并到exe文件中)

值得一提的是,在Windows中,静态链接库(Static Link Library)的扩展名也是.lib.dll.a。静态链接库和导入库的区别是:

  • 静态链接库:包含了函数的具体实现代码
  • 导入库:不包含函数的具体实现代码(函数的具体实现代码存储在dll中)

修改.pro文件

# 设置头文件的目录,以便编译器能够找到头文件
INCLUDEPATH += %FFMPEG_HOME%/include
# 设置导入库的目录和需要链接的导入库
LIBS += -L%FFMPEG_HOME%/lib \-lavcodec \-lavdevice \-lavfilter \-lavformat \-lavutil \-lpostproc \-lswscale \-lswresample

#号后面的内容是注释
%FFMPEG_HOME%表示ffmpeg-4.3.2-2021-02-27-full_build-shared.7z解压后的目录
需要根据你的实际情况修改为真实的路径
-L:设置导入库的目录,以便编译器能够找到导入库
-l:设置需要链接的导入库名称
导入库名称需要去掉文件名前面的lib,比如libavcodec.dll.a就写成avcodec

调用函数

main.cpp中调用av_version_info函数,获取FFmpeg的版本信息。

 
#include "mainwindow.h"#include <QApplication>// 为了使用qDebug函数
#include <QDebug>// FFmpeg是C语言库
// 有了extern "C",才能在C++中导入C语言函数
extern "C" {
#include <libavcodec/avcodec.h>
}int main(int argc, char *argv[]) {// 打印版本信息qDebug() << av_version_info();QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

拷贝dll文件

Qt程序编译成功后,会生成一个exe文件exe是Windows中的一种可执行文件
我们编写的程序代码最终都存在了exe文件中
为了保证exe在运行时能成功调用FFmpeg的函数,那么就得让exe能够找到FFmpeg的dll文件(动态库文件)。可以将%FFMPEG_HOME%/bin目录中的所有dll文件拷贝到exe文件所在的目录中,exe在运行的时候,能自动找到跟它同一目录下的dll文件。

可以通过查看构建目录得知exe文件所在的目录。

运行程序后,如果能在控制台看到当前ffmepg 的版本信息 字样的输出信息,说明FFmpeg已经集成成功。

问题记录:

这里实际测试中还有一个问题,先记录一下,但是原因暂时不知道:

实际开发中 只有使用 MinGW 64-bit这个才能build pass,并运行成功,使用其他的三个都有build error

假设我们开发好程序要给 user 的windows电脑上使用,那么user是不一定装过ffmpeg,或者SDL的,因此我自己觉得好的做法,应该是如下的

在 03Recordaddtimer_home的 .pro文件中的写法如下
INCLUDEPATH += ../include
DEPENDPATH += ../includeLIBS += -L../lib \-lavcodec \-lavdevice \-lavfilter \-lavformat \-lavutil \-lpostproc \-lswresample \-lswscale

这样就能将.h文件 引入,将动态库索引引入。

在执行的时候,还是会遇到 找不到各种dll的问题。

因此还需要将真正的dll文件放在 程序运行的exe 同一目录下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【paper】基于分布式采样的多机器人编队导航信念传播模型预测控制

Distributed Sampling-Based Model Predictive Control via Belief Propagation for Multi-Robot Formation NavigationRAL 2024.4Chao Jiang 美国 University of Wyoming 预备知识 马尔可夫随机场&#xff08;Markov Random Field, MRF&#xff09; 马尔可夫随机场&#xff…

域内 dcsync 权限维持

一、原理 DCSync 是域渗透中经常会用到的技术&#xff0c;其被整合在了 Mimikatz 中。在 DCSync 功能出现之前&#xff0c;要想获得域用户的哈希&#xff0c;需要登录域控制器&#xff0c;在域控制器上执行代码才能获得域用户的哈希。 Mimikatz的DCSync 功能&#xff1a; 该…

java8总结

java8总结 java8新特性总结1. 行为参数化2. lambda表达式2.1 函数式接口2.2 函数描述符 3. Stream API3.1 付诸实践 java8新特性总结 行为参数化lambda表达式Stream Api 1. 行为参数化 定义&#xff1a;行为参数化&#xff0c;就是一个方法接受多个不同的行为作为参数&#x…

【机器学习】前沿探索,如何让前端开发更加搞笑

在当今数字化时代&#xff0c;机器学习的崛起为前端开发带来了巨大的机遇和挑战。随着人工智能和数据科学的不断进步&#xff0c;前端工程师不再局限于传统的界面设计和交互体验&#xff0c;而是开始探索如何将机器学习技术融入到他们的工作中&#xff0c;以创造更加智能、个性…

面了一个程序员,因为6休1拒绝了我

人一辈子赖以生存下去的主要就考虑三件事&#xff0c;职业&#xff0c;事业&#xff0c;副业&#xff0c;有其1-2都是很不错的。如果还没到40岁&#xff0c;那不妨提前想下自己可能遇到的一些情况&#xff0c;提前做一些准备&#xff0c;未雨绸缪些。 今年整体就业大环境也一般…

【手写大跟堆详解】

文章目录 大跟堆介绍大跟堆的结构大跟堆的应用场景大跟堆的代码实现 大跟堆介绍 大根堆&#xff08;Max Heap&#xff09;是一种特殊的二叉树结构&#xff0c;它满足以下两个条件&#xff1a; 1.完全二叉树&#xff1a;大根堆是一棵完全二叉树&#xff0c;即除了最后一层外&am…

Qt_电脑wifi相关操作

项目描述: 在做项目时用到了获取wifi的操作。在网上查找了好久资料,这里做一些总结。 这里有显示当前电脑wifi连接状态,列出wifi列表,连接断开wifi等函数。欢迎大家留言添加文章内容。 使用范围: windows电脑(中文的环境) 使用技术:windows的cmd命令。和对字符串的解析…

C语言学习笔记--运算符与表达式(7521字爆肝)

上午好&#xff0c;本来想上午改简历下午学习c语言的&#xff0c;但想了一下上午精力充沛还是用来学习比较好&#xff0c;虽然现在失业了&#xff0c;但住在我姨家有吃有住的&#xff0c;再次感谢我姨&#xff0c;我要抓紧时间修改简历&#xff0c;然后找个工作搬出去&#xff…

【回忆版】数据科学思维与大数据智能分析 2024考试

填空&#xff08;18分&#xff09;18个 1.对数变换对大数值的范围进行压缩&#xff0c;对小数值的范围进行扩展 2.提取出大量高频率项与低频率项相关联的虚假模式&#xff0c;即交叉支持&#xff08;cross-support&#xff09;模式 3.信息论中&#xff08;&#xff09; 4.几种…

[数据集][目标检测]弹簧上料检测数据集VOC+YOLO格式142张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;142 标注数量(xml文件个数)&#xff1a;142 标注数量(txt文件个数)&#xff1a;142 标注类别…

yolov8训练自己数据集时出现loss值为nan。

具体原因目前暂未寻找到。 解决办法 将参数amp改成False即可。 相关资料&#xff1a; https://zhuanlan.zhihu.com/p/165152789 https://github.com/ultralytics/ultralytics/issues/1148

【BUG】Edge|联想电脑 Bing 搜索报错“Ref A: 乱码、 Ref B:乱码、Ref C: 日期” 的解决办法

文章目录 省流版前言解决办法 详细解释版前言问题描述与排查过程解决办法与总结 省流版 前言 我也不清楚咋滴了&#xff0c;Bing 搜索突然偶尔报错&#xff1a; 换了代理关了插件都报错。 参考&#xff1a; 我在用bing搜索时出现了如下代码&#xff0c;导致bing无法使用&am…

1 计算机硬件-CPU-校验码-存储系统-输入输出设备-总线结构

计算机硬件 考情分析&#xff1a;趋势很小&#xff0c;22年考过&#xff0c;根据趋势以后考的可能较小 基本组成&#xff1a;运算器&#xff0c;控制器&#xff0c;储存器&#xff0c;输入设备&#xff0c;输出设备运算器和控制器也统称为中央处理单元&#xff08;CPU&#xf…

深度学习——图像分类(CNN)—测试模型

测试模型 1.导入必要的库2.加载测试数据集3.假设CSV文件中的图像文件名是完整的路径4.随机选择一张图片进行展示5.加载图像6.使用模型进行预测7.设置模型的预测结果8.计算准确率9.指定test文件夹路径10.读取名为image_path的图片11.加载图像12.检查图像是否为空 训练的模型是上…

eNSP学习——OSPF单区域配置

目录 相关命令 实验背景 实验目的 实验步骤 实验拓扑 实验编址 实验步骤 1、基础配置 2、部署单区域OSPF网络 3、检查OSPF单区域的配置结果 OSPF——开放式最短路径优先 基于链路状态的协议&#xff0c;具有收敛快、路由无环、扩展性好等优点&#xff1b; 相关命令 […

【JAVA基础之内部类】匿名内部类

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;小林同学的专栏&#xff1a;JAVA之基础专栏 目录 1.内部类 1.1 概述 1.1.1 什么是内部类 1.1.2 什么时候使用内部类 1.2 内部类的分类 1.3 成员内部类 1.3.1 获取成员内部类对象的两种方式 1.3.2 经典面试…

用C语言把一棵普通二叉树安排得明明白白

1. 树的相关术语 结点的度&#xff1a;一个结点含有的子树的个数称为该结点的度&#xff1b; 如上图&#xff1a;A的为6 叶结点或终端结点&#xff1a;度为0的结点称为叶结点&#xff1b; 如上图&#xff1a;B、C、H、I...等结点为叶结点 非终端结点或分支结点&#xff1a;度不…

【Linux】-Tomcat安装部署[12]

目录 简介 安装 安装部署JDK环境 解压并安装Tomcat 简介 Tomcat是由Apache开发的一个Servlet容器&#xff0c;实现了对Servlet和JSP的支持&#xff0c;并提供了作为Web服务器的一些特有功能&#xff0c;如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说&#…

【软件工程】【23.10】p2

关键字&#xff1a; 软件复用技术、过程途径、特定需求是文档核心、数据字典条目、高内聚低耦合独立性、数据流图映射模块结构图、UML依赖、用例图关系、RUB迭代、程序规格说明等价类划分、有效性测试的目标、喷泉模型面向对象、软件验证过程、CMMI

【Linux】Centos7安装RabbitMQ

【Linux】Centos7安装RabbitMQ 下载 从 rabbitmq 的 GitHub 仓库下载 https://github.com/rabbitmq/rabbitmq-server/releases rabbitmq 是 erlang 语言编写的&#xff0c;需要先安装 erlang https://github.com/rabbitmq/erlang-rpm/releases 安装 使用rz命令上传 erlang 和 …