编译好的opencv3.1.0_mingw版下载可用

网上转载:感谢网友提供,学习啦!

最近正在学习OpenCV ,为毕业设计做准备。Windows版本的OpenCV都默认提供对VS的支持,其在VS中的配置比较简单,网上也有大批教程详细描述了配置步骤。但在使用Qt Creator时的配置就较为繁琐,网络上大多数教程使用的软件版本也比较陈旧,经反复尝试后终于成功,特将配置步骤记录下来,以便以后及他人查阅参考。

我将编译好的库文件上传到了云盘中,如果你的开发环境与我相同,可以在最下方直接下载。

  1. 前期准备
    本机环境及使用软件:

Windows 7 64位
OpenCV 3.1.0 : https://sourceforge.net/projects/opencvlibrary/files/ (3.2.0也适用)
Qt 5.7.0 : http://www.qt.io/ or http://download.qt.io/
MinGW 5.3.0 : 包含在Qt中,无需单独下载。
CMake 3.7.2 : https://cmake.org/
另外:本机中还安装了VS2015,它的影响会在下文中提及。

首先,建议上述所有软件的安装路径都不要包含中文或空格 。

OpenCV 目前(2017.2)最新版本为3.2.0。安装OpenCV其实就是解压,尽量解压在某盘根目录或较短的目录下,我们只用其中的“sources”文件夹。对于本文来说,因为需要重新编译源码,也可以只到github上下载源码: https://github.com/opencv/opencv 。

Qt 目前最新版本为5.8.0。鉴于国内网络环境,建议下载离线版。关于Qt的安装与配置,可在另一篇博客中查看(未完成),安装过程中要勾选安装MinGW。本人使用的版本为: qt-opensource-windows-x86-mingw530-5.7.0 。

CMake主要用来生成Makefiles,与MinGW中的编译器配合使用。安装过程中注意勾选“为所有用户添加环境变量”:Add CMake to the system PATH for all users 。

确保上述软件安装好之后,可进行下一步操作。

  1. CMake中的操作
    打开CMake (cmake-gui)。

第一行源代码位置,选择 …\opencv\sources 文件夹,如:D:\opencv\sources 。

第二行是编译输出的目录,建议放在某盘根目录或较短的目录下,如 D:\opencv_mingw 。

Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

点击configure,在弹出窗口的下拉列表里选择MinGW Makefiles,选项选择Specify native compilers,点击Next;

注:因为本机中安装了VS,如果选择第一项“适用默认本地编译器“,会使用VC编译器。而我们需要为Qt使用mingw的编译器,因此需要手动指定编译器。如果读者也安装过VS,则需注意这个问题。

Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

指定编译器,在Qt自带的MinGW的目录下:

C 编译器:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin/gcc.exe
C++编译器:C:/Qt/Qt5.7.0/Tools/mingw530_32/bin/g++.exe
Fortran不用填写
Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

点击finish,此过程必须联网,因为需要下载几个文件。

等待一会儿后,会有一堆红色出现,无需担心。找到并勾选WITH_QT,如果要用OpenGL的功能可以勾选WITH_OPENGL,不能勾选WITH_IPP(默认不勾选)

有的教程上说要在CMAKE_BUILD_TYPE处添加“Debug” ,不添加也不影响。

Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

再次点击configure,若还有红色出现,再点击configure直到红色消失。

点击Generate按钮,完成后即可关闭CMake。

  1. cmd下的操作
    首先必须在环境变量中添加mingw的目录:C:\Qt\Qt5.7.0\Tools\mingw530_32\bin

打开cmd,转到用CMake生成的目录,如: cd /d D:\opencv_mingw

小提示:除了cd命令,还可以在要转到的目录下按住shift同时右键,点击“在此处打开命令窗口”。

之后输入 mingw32-make , 之后就开始漫长的等待。。。

[100%] 后输入 mingw32-make install ,稍等即可。

  1. 精简编译好的库文件
    编译完成后会发现目标文件夹有一个多G大小,无需担心,我们只需要其中的一部分。

网上很多教程都说要:[保留“bin”、“lib”文件夹,再将原始OpenCV库中的“include”拷贝过来]。这里与其他教程不同的是,我建议只保留 install 文件夹,其他都可以删除。

详细解释如下;观察install目录结构:

Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

小技巧:想生成目录结构到txt文件,可在cmd中转到某目录,输入tree /f > list.txt。

其中,etc中包含两类已经训练好的分类器,分为Haar特征和LBP特征,可以用在人脸识别等程序中;include中是需要的头文件;x86/mingw中则包含bin和lib两个文件夹,其中分别是动态链接库和静态链接库。因此install中已经包含了所有需要的文件。

而install/x86/mingw中的bin和lib与上层目录中的bin和lib有什么区别呢?观察可以发现,install中的bin和lib中少了很多文件名中有“pref”和“test”的文件,这些文件实际上是不需要的。因此只保留install文件夹是最不浪费空间的做法。

删除其他无用的文件夹后,我们所需的库文件只有62.3 MB,压缩一下只有14 MB,这已经很小了。我将制作好的库文件上传到了云盘中,需要的话可以在最下方下载。

5.Qt Creator 中工程文件的配置
首先将编译好的库添加进环境变量,如 D:\opencv_mingw\install\x86\mingw\bin ,如不添加则会出现程序编译通过但运行时提示“程序异常结束”的问题。

小提示:每次添加或删除环境变量后,都要重启Qt Creator才能生效。

打开Qt Creator,新建工程或者在已有工程文件中打开.pro文件,添加包含头文件的语句:

INCLUDEPATH += D:\opencv_mingw\install\include
接下来,如果你想使用动态链接库,则再添加:

LIBS += D:\opencv_mingw\install\x86\mingw\bin\libopencv_*.dll
而如果你想使用静态连接库,则要添加:

LIBS += D:\opencv_mingw\install\x86\mingw\lib\libopencv_.a
这里都是使用了“
”包含了所有的链接库,如果想只用一部分则可以这样输入:

LIBS += D:\opencv_mingw\install\x86\mingw\bin\libopencv_calib3d320.dll \

											libopencv_core320.dll \...

小提示:带空格的库路径是不能直接使用的,需要按如下格式输入:

INCLUDEPATH += $$quote(D:\Program Files\opencv_mingw\install\include)

LIBS += -L $$quote(D:\Program Files\opencv_mingw\install\x86\mingw\bin\libopencv_*.dll)

在工程上右键点击执行QMake 。

Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

之后进行正常的编译运行即可。

  1. 示例程序
    网络上的教程到最后示例程序这一步时,很多都是将Qt的原有结构删除,直接给一个opencv的简单程序就完事儿,一般都是显示一张图片。

我这里高级一点,给一个调用摄像头并显示图像的简单示例。这个程序摘自毛星云(浅墨)的《OpenCV3编程入门》。

#include <opencv2/opencv.hpp>using namespace cv;int main(){//【1】从摄像头读入视频VideoCapture capture(0);//【2】循环显示每一帧while(1){Mat frame;  //定义一个Mat变量,用于存储每一帧的图像capture>>frame;  //读取当前帧imshow("video",frame);  //显示当前帧waitKey(30);  //延时30ms}return 0;}

如果配置正确而且用的是笔记本,应该会出现自己的脸。这时可以用鼠标滚轮放大缩小一下看看效果:

Windows下OpenCV 3.1.0 在 Qt Creator 4.0.2 (Qt 5.7.0 MinGW) 中的开发环境配置

但是,如果不去利用Qt设计界面的便捷特性,只是使用Qt Creator这个IDE写着跟VS下一样的程序,有什么意义呢?

所以我想提供一个让OpenCV 与Qt 结合使用的例子,示例程序可以参看我翻译的几篇国外网站上的[OpenCV Qt教程] !

编译好的库文件:http://pan.baidu.com/s/1c2MNJ9I

本人在配置过程中主要参考了以下两篇文章。

http://*.com/questions/15881913/how-to-link-opencv-in-qtcreator-and-use-qt-library

http://blog.csdn.net/qq_28839293/article/details/52230111

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

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

相关文章

Vue中的计算属性与监听器

聚沙成塔每天进步一点点 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习。每篇文章都致力于提供清晰、深入的参考资料,让你能够更轻松、更自信地理解和掌握 Vue.js 的核心概念和技…

vite项目配置项目可通过局域网访问

vite.config.js配置如下 import { defineConfig } from vite import vue from vitejs/plugin-vueexport default defineConfig({server: {port: 3001, // 访问端口号host: 0.0.0.0, // 配置项目可以局域网访问cors: true, // 默认启用并允许任何源plugins: [vue()],base: ./, …

大数据开发与低代码:加速数据处理与解决方案开发

随着数据量的爆炸式增长&#xff0c;大数据开发变得愈发重要。然而&#xff0c;传统的大数据开发方法往往需要复杂的编码和开发过程&#xff0c;消耗时间和资源。而低代码开发平台的出现为大数据开发带来了全新的解决方案。本文将介绍大数据开发和低代码的概念&#xff0c;并探…

python的课后练习总结4(while循环)

for循环用于针对序列中的每个元素的一个代码块。 while循环是不断的运行&#xff0c;直到指定的条件不满足为止。 while 条件&#xff1a; 条件成立重复执行的代码1 条件成立重复执行的代码2 …….. i 1while i < 5:print(i)i i 11、使用wh…

WMS仓储管理系统与WCS系统:功能差异与特点对比

在物流行业的现代化管理中&#xff0c;WMS仓储管理系统和WCS仓库控制系统扮演着举足轻重的角色。虽然它们都是仓库管理软件系统&#xff0c;但是它们在功能和应用场景上存在显著的差异。本文将详细阐述这两者的功能和区别。 一、WMS仓储管理系统 WMS是一种综合性的软件系统&…

制药企业符合CSV验证需要注意什么?

在制药行业中&#xff0c;计算机化系统验证&#xff08;CSV&#xff09;是确保生产过程的合规性和数据完整性的关键要素。通过CSV验证&#xff0c;制药企业可以保证其计算机化系统的可靠性和合规性&#xff0c;从而确保产品质量和患者安全。然而&#xff0c;符合CSV验证并不是一…

通过回答自然语言问题进行事件抽取(EMNLP2020)

1、写作动机&#xff1a; 以往的事件抽取方法都基于神经网络模型抽取的密集特征和预训练语言模型的上下文表示。但是&#xff0c;它们&#xff08;1&#xff09;严重依赖实体识别进行事件论元抽取&#xff0c;特别是通常需要采用多步骤方法来进行事件论元抽取。&#xff08;2&…

Android linephone-android sdk设置语音编码问题

1.遇到的问题 今天遇到linphone-android sdk需要解决语音编码问题&#xff0c;需要指定编码。查了下配置&#xff0c;里面没有发现类似的配置。 ## Start of factory rc # This file shall not contain path referencing package name, in order to be portable when app is r…

如何搭建中后台管理系统

vue3 TS vite 搭建中后台管理系统 前言1、搭建步骤及方法2、集成多种插件功能&#xff0c;实现中后台按需使用3、新手学TS如何快速进入状态、定义TS类型4、layout搭建四款常见风格6、大屏搭建效果5、vue3Ts运营管理系统总结&#xff1a; 前言 要成功&#xff0c;先发疯&…

【QT】中英文切换

很高兴在雪易的CSDN遇见你 前言 本文分享QT中如何进行中英文切换&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&#xff01; 你的点赞就是我的动力(&#xff3e;&#xff35;&#xff3e…

阿里云ECS服务器无法访问端口(防火墙在关闭状态也启作用)

问题&#xff1a;一直用得好好的端口&#xff0c;突然在某一时间不可以访问这个端口了 &#xff0c;在服务器录入外网地址访问如下图&#xff1a; 先按正常流程检测&#xff1a; 1 先云服务商的管理网站查看防火墙端口是否开放 看了正常开放了端口&#xff0c;如下图&#xff…

(JAVA)-动态代理

代理在我们生活中很常见&#xff1a; &#xff1a;当我们想看演唱会时&#xff0c;让黄牛帮我们排队买。 &#xff1a;当明星要唱歌时&#xff0c;委托别人帮忙准备。 &#xff1a;老婆想吃饭&#xff0c;让老公帮他做饭。 代理模式就是把我们不愿意做的事情委托给别的对象…

React组件间的通信

在React中&#xff0c;组件间的通信可以通过以下几种方式实现&#xff1a; 父子组件通信&#xff1a; 父组件通过props向子组件传递数据或回调函数。子组件通过props接收数据或回调函数&#xff0c;并在需要时调用回调函数向父组件传递数据。// 父组件 function ParentComponen…

T527 camera: AHD摄像头转MIPI

一、AHD 常见的摄像头接口一般有MIPI、USB、DVP等等&#xff0c;但是MIPI摄像头受限于高速信号的传输距离问题&#xff0c;导致走线不能太长&#xff0c;这样在安防监控领域、车载等领域&#xff0c;使用就很受限&#xff0c;因此会引入AHD&#xff0c;目的就是提高了传…

【unity小技巧】Unity音乐和音效管理器

最终效果 前言 在游戏开发中&#xff0c;音乐和音效的管理是一个重要的环节。好的音乐和合适的音效可以为游戏增添氛围并提升玩家的体验。为了更好地管理音乐和音效&#xff0c;我们可以使用一个专门的音乐和音效管理器。 在本文中&#xff0c;我将向大家介绍如何在Unity中创…

倍思科技红海突围要义:紧随新趋势,“实用而美”理念从一而终

移动数码周边市场始终不缺热度。 销售端是业绩的节节高升&#xff0c;如在2023年京东双十一&#xff0c;移动数码周边产品销售成果丰硕&#xff0c;根据京东战报&#xff0c;大功率充电器成交额同比提升 200%&#xff0c;65W以上移动电源成交额同比提升 150%&#xff0c;自带线…

Spring Boot 生产就绪中文文档-上

本文为官方文档直译版本。原文链接 由于篇幅较长&#xff0c;遂分两篇 Spring Boot 生产就绪中文文档-上 引言启用 Production-ready 功能端点&#xff08;Endpoints&#xff09;启用端点暴露端点安全跨域请求伪造保护 配置端点敏感值脱敏执行器网络终端的超媒体CORS 支持实现自…

视频号小店电脑版怎么登录注册?一篇详解!

大家好&#xff0c;我是电商糖果 糖果今天给大家带来的是视频号小店电脑版的注册流程修改&#xff0c;近期有准备开店的朋友。 一定要认真阅读&#xff0c;内容非常详细。 首先开店前的准备工作&#xff1a;一张企业执照&#xff0c;一个对公账户&#xff0c;一个品牌授权&a…

Java IO流介绍以及缓冲为何能提升性能

概念&#xff1a; 流是一种抽象概念&#xff0c;它代表了数据的无结构化传递。按照流的方式进行输入输出&#xff0c;数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作&#xff0c;而向流中添加数据的操作称为插入操作。 Java IO 也称为IO流&#xff0c;…

海外 proxy代理Croxyproxy使用教程

什麼是Croxy代理&#xff1f; CroxyProxy是一項線上代理服務。它允許用戶訪問被阻止的網站和應用程式&#xff0c;提供一種安全的方式來訪問互聯網資源&#xff0c;同時維護用戶隱私。與許多其他網路代理不同&#xff0c;它支持幾乎所有類型的網站&#xff0c;包括視頻、搜索引…