QT5 windows
SDL音频下载:QT+SDL3-CSDN博客
资源下载【免费】:
Cmake:
cmake官网:Download CMake
cmake本地安装包4.1.2:【免费】cmake-win-x86-64.msi标准64位win4.1.2资源-CSDN下载
Opencv:
opencv官网:Releases – OpenCV
opencv本地安装4.9.0:【免费】opencv4.9.0win.exe资源-CSDN下载
opencv本地安装4.5.4:【免费】opencv4.5.4win.exe资源-CSDN下载
opencv早期版本baidu文件V3.2:OpenCV (百度云盘下载)
Ffmpeg:
ffmpeg官网:Builds – CODEX FFMPEG @ gyan.dev 【有点慢但是还能下】
ffmpeg本地安装8.0:【免费】ffmpge8.0用于二次开发资源-CSDN下载
目录:
资源下载【免费】:
官网下载教程:
安装教程:
opencv生成编译文件
配置构建系统
编译生成.obj文件
安装 方便其他程序使用开发
配置环境变量
ffmpeg生成编译文件
配置环境变量
检查版本
拷贝到项目
Qt 导入ffmepg
Qt 导入opencv
打包与运行
静态库与动态库区别讲解:
关于收费问题:
官网下载教程:
CMake:

opencv:
lib ->release -> 选版本4.12.0为例 window


ffmpeg:




安装教程:
cmake 点击 .msi安装
opencv点击exe选择路径提取extract如下文件

opencv生成编译文件
配置构建系统
第一步:准备“厨房”和“食材
D:/opt/qt/OpenCV/opencv/sources
D:/opt/qt/OpenCV/opencv/opencv-build

完成上图后,点击configure.
选择MinGW Makefile和“Specify native compilers”->next.

D:/opt/qt/qtinstall/QT512/Tools/mingw810_64/bin/gcc.exe
D:/opt/qt/qtinstall/QT512/Tools/mingw810_64/bin/g++.exe

-点击finish,会自动构建。
构建完成后,在界面红勾选“WITH_1394”, “WITH_OPENGL”, “WITH_QT”, “WITH_OPENMP” ,点击configure,完成后,标红的部分基本已经消失。

后续通过entry手动添加就行
1. Qt配置问题
# 需要手动设置Qt路径
QT_QMAKE_EXECUTABLE: D:/Qt/5.15.2/msvc2019_64/bin/qmake.exe Qt5_DIR: D:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5解决方法:
点击”Add Entry”按钮添加以下变量:
变量名:
CMAKE_PREFIX_PATH变量值:
D:/Qt/5.15.2/msvc2019_64/lib/cmake

generate 生成makefile,点击generate。

编译生成
.obj文件
.obj
打开Power shell
进入E:libopencvopencv-build路径下,运行mingw32-make -j 4 (-j 线程数查看自己处理器的线程数,提高编译速度)
cd d:
D:> cd D:optqtOpenCVopencvopencv-build
D:optqtOpenCVopencvopencv-build> mingw32-make -j 4

不出错的话,完成运行后运行mingw32-make install完成安装。
安装 方便其他程序使用开发
PS D:optqtOpenCVopencvopencv-build> mingw32-make install

配置环境变量
进入install找到如下图所示路径添加到环境变量,重启电脑。 win+r sysdm.cpl
D:optqtOpenCVopencvopencv-buildinstallx64mingwin
ffmpeg生成编译文件
从官网解压的包含 full-build-shared 可以进行二次开发

配置环境变量
win+r sysdm.cpl
D:optqtffmpegffmpeg-7.0.2-full_buildin

检查版本
cmd,输入ffmpeg -version 如下所示:
ffmpeg -version
拷贝到项目
bin下的所有dll拷贝到项目的debug下,include和lib文件夹全拷贝到项目下


Qt 导入ffmepg
ffmpeg8.0动态链接相关文件,直接放在项目中资源-CSDN下载
这里选择动态库,将解压后的ffmpeg 目录下include和bin目录放置在自己的工程目录。
.pro 文件导入:
# FFmpeg 配置
INCLUDEPATH += $$PWD/include
# 链接库测试
LIBS += $$PWD/avcodec-62.dll
$$PWD/avformat-62.dll
$$PWD/avutil-60.dll
$$PWD/swscale-9.dll
Qt 导入opencv
opencv4.9.0编译后的代码,直接引入项目资源-CSDN下载
.pro文件导入
#opencv
INCLUDEPATH += D:optqtOpenCVopencvopencv-buildinstallinclude
LIBS += D:optqtOpenCVopencvopencv-buildliblibopencv_*.a
测试程序:
.pro添加
# FFmpeg 配置
INCLUDEPATH += $$PWD/include
# 链接库测试
LIBS += $$PWD/avcodec-62.dll
$$PWD/avformat-62.dll
$$PWD/avutil-60.dll
$$PWD/swscale-9.dll
#opencv
INCLUDEPATH += D:optqtOpenCVopencvopencv-buildinstallinclude
LIBS += D:optqtOpenCVopencvopencv-buildliblibopencv_*.a
# 确保 DLL 文件在运行时可用
# win32 {
# # 复制 DLL 文件到构建目录
# for(dll, avcodec-62.dll avdevice-62.dll avfilter-11.dll avformat-62.dll avutil-60.dll swresample-6.dll swscale-9.dll) {
# QMAKE_POST_LINK += $$QMAKE_COPY $$shell_path($$PWD/$$dll) $$shell_path($$OUT_PWD) $$escape_expand(nt)
# }
# }
mainwindow.h 添加
public:
void testFFmpeg();
void testOpenCV();
mainwindow.cpp 添加
调试,并生成两张图片(一个是imshow一个是通过qlabel)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
/**ffmpeg**/
extern "C"
{
#include <libavcodec/avcodec.h> // 在头文件包含 - 是否正确?
#include <libavformat/avformat.h> // 在头文件包含 - 是否正确?
}
/**opencv**/
#include <opencv2/opencv.hpp>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::testFFmpeg()
{
qDebug() << "=== FFmpeg 测试 ===";
qDebug() << "avcodec 版本:" << avcodec_version();
qDebug() << "avformat 版本:" << avformat_version();
const char* version = av_version_info();
if (version) {
qDebug() << "FFmpeg 版本:" << version;
}
}
void MainWindow::testOpenCV()
{
qDebug() << "开始测试 OpenCV...";
// 方法1:打印版本信息
qDebug() << "OpenCV 版本:" << CV_VERSION;
// 方法2:尝试读取并显示一张图片(更彻底的测试)
// 注意:你需要准备一张名为 "test.jpg" 的图片放在程序的工作目录下
// 或者使用绝对路径,例如 "C:/Users/YourName/Pictures/test.jpg"
cv::Mat image = cv::imread("D:/download/WrongIcon.jpg");
if (image.empty()) {
qDebug() << "错误:无法加载图片 'test.jpg'!请检查文件路径。";
// 即使图片加载失败,只要能执行到这里,也说明库链接成功了
qDebug() << "但 OpenCV 库链接成功!";
} else {
qDebug() << "图片加载成功,尺寸:" << image.cols << "x" << image.rows;
// 尝试显示图片(可选,如果是在控制台程序,可能需要GUI支持)
cv::imshow("OpenCV Test Window", image);
cv::waitKey(0); // 等待按键
// cv::destroyAllWindows();
qDebug() << "OpenCV 测试完全通过!";
}
// 将 BGR 转换为 RGB(OpenCV 使用 BGR,Qt 使用 RGB)
cv::Mat rgbImage;
cv::cvtColor(image, rgbImage, cv::COLOR_BGR2RGB);
// 将 cv::Mat 转换为 QImage
QImage qimg(rgbImage.data,
rgbImage.cols,
rgbImage.rows,
rgbImage.step,
QImage::Format_RGB888);
// 将 QImage 转换为 QPixmap 并显示在 QLabel 中
QPixmap pixmap = QPixmap::fromImage(qimg);
ui->imageLabel->setPixmap(pixmap);
ui->imageLabel->setAlignment(Qt::AlignCenter);
qDebug() << "OpenCV 测试完全通过!图片已显示在界面中。";
}
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.testFFmpeg();
w.testOpenCV();
w.show();
return a.exec();
}
测试通过:

打包与运行
静态库与动态库区别讲解:
静态链接库与动态链接库-CSDN博客
关于收费问题:
本说明来自CSDN博客NarutoInspire
使用 LGPL 协议开发闭源程序,如果你使用动态链接的形式,那么,你可以以任何形式发布你的应用程序,商业的、非商业的、开源的、非开源的,随你。如果你因某种原因必须静态链接一个基于 LGPL 协议发布的库(一下我们简称为 LGPL 库),那么,你有义务进行下面的工作:
1.你必须在你的文档中说明,你的程序中使用了 LGPL 库,并且说明这个库是基于 LGPL 发布的;
2.你必须在你的应用程序发布中包含一份 LGPL协议,通常就是那个文本文件;
3.你必须开放使用了 LGPL 库代码的所有代码,例如某些封装器。但是,其他使用这些封装器的代码就不需要开放了;
4.你必须包含你的应用程序的余下部分的目标文件(通常就是我们所说的 .o 等等),或者是其他等价的文件。源代码并不是必须的。














暂无评论内容