IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Qt编译OpenCv详细记录(MinGW-32编译) -> 正文阅读

[开发工具]Qt编译OpenCv详细记录(MinGW-32编译)

一、环境:Qt5.14.1 OpenCv 4.54

1、注意安装Qt的时候确保勾选 Qt Tools 里面的 MinGW工具包

在这里插入图片描述
安装opencv后,解压缩能看见以下选中的文件
在这里插入图片描述

sources就是源代码,build文件夹是给visual stdio 使用的已经编译好的库

1、安装Qt

链接: QT5.12安装图文教程与安装成功后环境配置详细教程.

2、安装Cmake

1、进入官网,直接下载最新的cmake安装包即可
在这里插入图片描述
2、和普通软件安装一样、选择你合适的位置安装即可

注意:很关键
1、配置Qt Tools MinGW 的环境变量
2、配置Cmake 的环境变量
3、配完环境变量可以立刻重启电脑,那样环境变量才生效

选择上面两个软件的bin目录即可
1、Cmake:
在这里插入图片描述
2、Qt Tools MinGW :
在这里插入图片描述
环境变量如下:
在这里插入图片描述

中间的那个目录是 给visual stdio 使用配置的OpenCv的环境变量、可不管

二、编译流程

1、配置CMake参数

打开CMake-Gui
1、选择 OpenCv源代码
2、选择(或新建)一个存放编译文件的文件夹
我的是 mingw_32_build (直接是在源代码同级新建的一个文件夹)

编译过程文件夹
cmake-编译源代码及编译过程文件夹选择
在这里插入图片描述

选择 MinGW makefiles (因为是使用MinGW编译方式)
选择 native compilers (就是用Qt自带的MinGW工具)

在这里插入图片描述

位置和之前配置环境变量路径一致

在这里插入图片描述

C编译选 gcc.exe; C++选 g++.exe (常识问题)

在这里插入图片描述

参数选择 (可以在搜索框里搜索这些参数即可)
勾上: with opengl 、build_opencv_world(就不用生成分离的dll)、选择build type(根据自己需要选择debug、release)
不勾:with_opencl_d3d11_nv、(没有可以不选)、不勾选python相关的,我不需要python、有python部分报错就不选
本次配的是debug模式

在这里插入图片描述

然后检查日志
一些库是有问题,去对应路径检查 CMakeDownloadLog.txt

日志输出窗口

在这里插入图片描述

日志位置

在这里插入图片描述

查看日志
其实就是说几个关键的 ffmpeg的库、及配置文件在外网,cmake下载不下来,只能手动下载;
这个问题会导致使用opencv操作视频文件、封包解包出错;
但是能打开图片,能正常打开摄像头,就不能打开视频文件

下面展示一些 `错误`。

#use_cache “C:/Users/rgzn/Desktop/opencv/opencv-3.4.3/.cache”
#do_copy “opencv_ffmpeg.dll” “fa5a2a4e2f37defcb95bde8ed145c2b3” “https://raw.githubusercontent.com/opencv/opencv_3rdparty/8041bd6f5ad37045c258904ba3030bb3442e3911/ffmpeg/opencv_ffmpeg.dll” “C:/Users/rgzn/Desktop/opencv/vs_opencv/3rdparty/ffmpeg”
#missing “C:/Users/rgzn/Desktop/opencv/vs_opencv/3rdparty/ffmpeg/opencv_ffmpeg.dll”
#check_md5 “C:/Users/rgzn/Desktop/opencv/opencv-3.4.3/.cache/ffmpeg/fa5a2a4e2f37defcb95bde8ed145c2b3-opencv_ffmpeg.dll”
#mismatch_md5 “C:/Users/rgzn/Desktop/opencv/opencv-3.4.3/.cache/ffmpeg/fa5a2a4e2f37defcb95bde8ed145c2b3-opencv_ffmpeg.dll” “d41d8cd98f00b204e9800998ecf8427e”
#delete “C:/Users/rgzn/Desktop/opencv/opencv-3.4.3/.cache/ffmpeg/fa5a2a4e2f37defcb95bde8ed145c2b3-opencv_ffmpeg.dll”
#cmake_download “C:/Users/rgzn/Desktop/opencv/opencv-3.4.3/.cache/ffmpeg/fa5a2a4e2f37defcb95bde8ed145c2b3-opencv_ffmpeg.dll” “https://raw.githubusercontent.com/opencv/opencv_3rdparty/8041bd6f5ad37045c258904ba3030bb3442e3911/ffmpeg/opencv_ffmpeg.dll”
timeout on name lookup is not supported
Trying 0.0.0.0…
TCP_NODELAY set
connect to 0.0.0.0 port 443 failed: Address not available
Failed to connect to raw.githubusercontent.com port 443: Address not available
Closing connection 0

解决的话
关注 #cmake_download后面的一句话,

本地存放这个文件的位置:“C:/Users/rgzn/Desktop/opencv/opencv-3.4.3/.cache/ffmpeg/fa5a2a4e2f37defcb95bde8ed145c2b3-opencv_ffmpeg.dll ”

服务器存放的位置:“https://raw.githubusercontent.com/opencv/opencv_3rdparty/8041bd6f5ad37045c258904ba3030bb3442e3911/ffmpeg/opencv_ffmpeg.dll”

1、把服务存放位置的路径复制到浏览器里在这里插入图片描述
2、选择本地存放的那个文件位置,覆盖就行
在这里插入图片描述
在这里插入图片描述

注意,里面的一个 cmake文件打开就是文本文件
不可复制新建,只能鼠标右键保存文件到之前本地的文件,覆盖之前的cmake文件(因为cmake会校验每一个文件的MD5值,复制和下载下来的不一样,会导致编译失败)

在这里插入图片描述

在这里插入图片描述
点击两次configure,再次检查 日志,可以看到匹配到了准确的hash值,
在这里插入图片描述
最后点击 generate
到此参数配置完成

2、编译OpenCV

1.进入编译存放目录

在这里插入图片描述

打开cmd或者powershell
在这里插入图片描述

2.执行编译命令

mingw32-make -j 16(我的电脑是8核16线程的,我就选的16,那样效率高,可能你的是12或8线程,那样选择你电脑最合适的线程数)

在这里插入图片描述

3.安装

mingw32-make install (之前在cmake里面有那个install的目录,默认就是./install/目录)

在这里插入图片描述
在这里插入图片描述

三、问题记录

1、主要是FFmpeg库下载不下来
参考其他博主方法:
日志问题分析 一.
日志问题分析 二.
日志问题分析 三.

四、测试

还要把编译好的安装目录加入环境变量并重启电脑、不然不报错但是运行不出来

pro文件

QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../Third_Libary_and_Books/OpenCV/opencv/mingw_32_build/install/x64/mingw/lib/ -llibopencv_world454.dll
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../Third_Libary_and_Books/OpenCV/opencv/mingw_32_build/install/x64/mingw/lib/ -llibopencv_world454d.dll
else:unix: LIBS += -L$$PWD/../../../../Third_Libary_and_Books/OpenCV/opencv/mingw_32_build/install/x64/mingw/lib/ -llibopencv_world454d.dll

INCLUDEPATH += $$PWD/../../../../Third_Libary_and_Books/OpenCV/opencv/mingw_32_build/install/include
DEPENDPATH += $$PWD/../../../../Third_Libary_and_Books/OpenCV/opencv/mingw_32_build/install/include

main函数

#include <QCoreApplication>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <QDebug>

using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
    string videoPath = "D:/test01.avi";
//    string path = "D:\\Programs_Projects\\Qt\\consolProject\\TestOpencvVideo\\Resources\\test.png";
//    Mat img = imread(path);
//    imshow("Image", img);
//    waitKey(0);

    VideoCapture cap(0);
    Mat singleImg;
    if(cap.isOpened())
    {
        qDebug()<<"open success!";

        while (true)
        {
            cap.read(singleImg);

            imshow("312",singleImg);

            waitKey(20);

        }
    }
    else {
        qDebug()<<"open error!";
        return 0;
    }

    return 0;
}

运行截图

1、视频播放
在这里插入图片描述
2、摄像头
在这里插入图片描述
3、图片
在这里插入图片描述
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:09:16  更:2022-01-01 14:11:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:01:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码