马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
VS2022搭建FFMPEG + Opencv开发环境 + 如何打包项目让程序也能独立跑在其他人的电脑上?
前言
本文的名字应该是我所写过的博客当中最长的,但内容以精简且保证实用为原则!
正文
首先是ffmpeg
环境搭建流程如下:
- 在网上下载已经被编译成动态库版的ffmpeg,我的是:ffmpeg-N-113099-g46775e64f8-win64-gpl-shared。
- 将 ffmpeg-N-113099-g46775e64f8-win64-gpl-shared/include 和 ffmpeg-N-113099-g46775e64f8-win64-gpl-shared/lib 两个目录都复制到项目源文件当中即和.vcxproj后缀的文件同一级。
- 将 ffmpeg-N-113099-g46775e64f8-win64-gpl-shared/bin目录下,全部的.dll后缀的文件复制到.vcxproj后缀的文件同一级目录中。
- 在vs2022中,右键项目,选择properties -> Configuration Properties -> VC++ Directories:
- 修改 General, 在Include Directories当中添加一项:./include。
- 修改 General, 在Library Directories当中添加:./lib。
- 选择properties -> Configuration Properties -> C/C++ -> General:
- 在Additional Include Directories中添加一项:./include。
- 选择properties -> Configuration Properties -> Linker -> General:
- 在Additional Library Directories中添加一项:./lib。
- 选择properties -> Configuration Properties -> Linker -> Input:
- 在Additional Dependencies中添加依靠库的名称:
- avcodec.lib
- avformat.lib
- avutil.lib
- avdevice.lib
- avfilter.lib
- postproc.lib
- swresample.lib
- swscale.lib
复制代码
- 点击右下角的应用按钮,生存退出。
运行如下测试代码:
- #include <iostream>
- extern "C" {
- #include "libavcodec/avcodec.h"
- #include "libavformat/avformat.h"
- }
- #include<opencv2/core/core.hpp>
- #include<opencv2/highgui/highgui.hpp>
- #include<opencv2/imgproc.hpp>
- int main()
- {
- std::cout << "Hello World!\n";
- printf("%s\n", avcodec_configuration());
- return 0;
- }
复制代码 输出一堆有关ffmpeg的版本以及参数信息即为配置乐成
然后是opencv的运行环境配置:
环境搭建流程如下:
- 同样可以在网上找到动态库版的opencv。
- 将 opencv/build/include 和 opencv\build\x64\vc15\lib 两个目录都复制到项目源文件当中即和.vcxproj后缀的文件同一级。(PS,如果项目目录因为引入其他头文件或库,include或lib目录已经存在,则将opencv/build/include和opencv\build\x64\vc15\lib下的全部文件手动复制到项目中对应的目录即可)
- 将 opencv\build\x64\vc15\bin 目录下,全部的.dll(更严谨一点是非.exe的全部文件)后缀的文件复制到.vcxproj后缀的文件同一级目录中。
- 重复上节3 ~ 5步骤。
- 选择properties -> Configuration Properties -> Linker -> Input:
- 在Additional Dependencies中添加依靠库的名称:
- opencv_world440.lib
- # 如果你需要同时安装opencv和ffmpeg的话,可以直接一次性添加如下依赖
- # avcodec.lib
- # avformat.lib
- # avutil.lib
- # avdevice.lib
- # avfilter.lib
- # postproc.lib
- # swresample.lib
- # swscale.lib
- # opencv_world440.lib
复制代码
- 点击右下角的应用按钮,生存退出。
运行如下测试代码:
- #include <opencv2/opencv.hpp>
- using namespace cv;
- int main() {
- const char* pic_path = "任意一张你电脑上的图片路径";
- Mat pic = imread(pic_path, 1);
- imshow("Hello World!", pic);
- waitKey();
- return 0;
- }
复制代码 可以看到用opencv的api乐成显示了一张图片,即为配置乐成。
在windows下对VS2022项目程序进行打包
末了就是对项目进行打包,实现让其有完整的依靠库,在其他人的电脑也能运行你的应用程序。 说简单点着实这个过程就各种动态库、静态库的拷贝。你找一台没任何环境的新电脑作为测试环境,让你的程序在它上面运行,运行的时候会崩溃,根据报错来一点一点将所缺失的库拷贝到应用程序所在的目录当中。 这里记载了一下只引入opencv和ffmpeg环境下打包的流程。当然微软还提供了更为强大的打包方式:Microsoft Visual Studio Installer Projects。本文所解说的打包方式是为这些特定需求人群服务的:不必要花里胡朝的方式,只求方便的一个打包方式。
- 将上方菜单栏的Debug改成Release。
- 再次根据在配置ffmpeg和opencv时的过程重新配置项目的properties。
- 末了修改:properties -> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library -> Multi-threaded DLL (/MD)
- 编译无报错
- 新建一个目录app
- 将项目根目录x64/Release/下全部文件拷贝到app
- 将前面配置的include、lib文件夹拷贝到app
- 将.dll文件拷贝到app
- 完成迁徙,app可独立在任何人的电脑上运行。
本章完结
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |