首页 > 编程语言 >C++ OpenCV安装教程

C++ OpenCV安装教程

时间:2023-05-13 11:45:54浏览次数:44  
标签:教程 编译 opencv C++ OpenCV https 下载 gh

C++ OpenCV编译安装教程

环境说明

win10 + MinGW64 + Cmake

下载mingw64 (版本:12.1.0 posix-seh)

image-20230302161954389

下载Cmake (版本3.17.5)

注:mingw64和cmake下载安装完成后记得把bin目录添加到【环境变量】,如:

image-20230513095456699

下载opencv (版本4.6.0,下载后双击exe,选择目录进行解压即可)

GitHub加速链接(复制下载链接后在链接前面添加https://gh.flyinbug.top/gh/即可),如

https://gh.flyinbug.top/gh/https://github.com/opencv/opencv/releases/download/4.6.0/opencv-4.6.0-vc14_vc15.exe

Cmake编译配置

编译前

打开cmake-gui,选择opencv源码路径和编译输出路径,如:

image-20230513095213227

注:输出目录为 build/release,要自己在sources文件夹下新建

然后,点击config,选择刚安装的gcc、g++编译器后,等待结束,中间会下载一些东西,不出意外的话肯定报红,没关系,接下来告诉你怎么手动下载好。

【主要是下载ade和ffmpeg这两个东西】

TIPS:下载的东西会存放在 sources/.cache目录下

首先去编译输出的目录build/release下,找到 CMakeDownloadLog.txt这个文件,下载的东西都会在这里记录下来。

然后搜索 cmake_download,如图所示是下载 ade 的示例:

image-20230513102848948

去给定的地址下载好后,按照上图所说那样,把文件重命名然后放到 .cache/ade(或者 .cache/ffmpeg

TIPS:提供两个加速地址:

  1. https://gh.gh2233.ml/ 用于加速github.com,用法:(在下载链接前添加即可)

    https://gh.gh2233.ml/https://github.com/opencv/ade/archive/v0.1.1d.zip
    
  2. https://raw.staticdn.net 用于加速raw.githubusercontent.com,用法:(替换域名即可)

    https://raw.staticdn.net/opencv/opencv_3rdparty/65ec04d4573dcdfa4531f0b9e67f35d8ffff873e/ffmpeg/opencv_videoio_ffmpeg_64.dll
    

都下载完成且放到对应的文件夹后的样子(注意使用的opencv不是4.6.0版本时,你的文件名前缀和我的可能不一样)

image-20230513104214872

接下来进行编译配置

配置编译选项

  1. 不需要test测试文件,所以把test都不打勾

image-20230513100235537

  1. 不需要编译python包(以后要用python开发opencv可以用pip下载安装)

    image-20230513100606815

  2. 不需要编译Java包

    image-20230513100705191

  3. 勾选 opengl

    image-20230513100807488

  4. 勾选build_opencv_world

    image-20230513100936844

  5. 勾选pkg

    image-20230513101009810

  6. 不勾选 precompiled_headers

    image-20230513104558977

  7. 设置安装路径,可以在mingw64安装路径下新建一个cpplibs文件夹,专门存放各种c++库

    image-20230513105444640

重新点击config,没有报红即可(如果是CMake Warning则不用理会)

然后generate

开始正式编译

打开cmd,进入 build/release目录,然后输入指令 mingw32-make -j7进行编译(时间较长)

TIPS: -j7表示使用7个线程进行编译,一般不超过cpu核心的2倍

注:这个过程如果出错,不要担心,回去看看配置编译选项这里是不是有什么没有配置,记得不要编译python,如果系统没有安装python的话或者python版本太旧可能会报错。

重新配置好后,重新config->generate->输入mingw32-make -j8,之前编译好的一些东西不用再编译,会在原来的基础上继续编译的。

安装

  1. 编译完成后,继续输入 mingw32-make install 即可自动安装到前面指定的文件夹内

  2. 进入安装好的文件夹中,把bin目录添加到环境变量

    image-20230513110018194

测试

新建一个cmake项目,其中Cmakelists.txt如下

cmake_minimum_required(VERSION 3.0.0)
project(cvTest VERSION 0.1.0)
set(CMAKE_CXX_STANDARD 11)

# 设置OpenCVConfig.cmake所在路径
set(OpenCV_DIR D:\\xxxx\\cpplibs\\opencv\\x64\\mingw\\lib)

find_package(OpenCV REQUIRED)

include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(cvTest WIN32 main.cpp)
target_link_libraries(cvTest ${OpenCV_LIBS})

测试代码main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
    // 图像显示测试
    cv::Mat img = cv::imread(R"(D:\test\1.jpg)");  // 这里使用R"()"是c++11新特性,可以不用对反斜杠“\”转义了

	if (!img.data)//判断图片是否加载进来
	{
		std::cout << "不能加载图片" << std::endl;
		return -1;
	}
	cv::namedWindow("加载的图片", cv::WINDOW_AUTOSIZE);
	cv::imshow("加载的图片", img);//""内命名一致,才能显示在一个窗口
	cv::waitKey(0);

}

image-20230513110729451

标签:教程,编译,opencv,C++,OpenCV,https,下载,gh
From: https://www.cnblogs.com/ajream/p/17397020.html

相关文章

  • 【C++】继承(上)
    @TOC1.继承的使用若有好多类,都有公共的特征,将类中的特性提取出来专门放在一个类中,这个类一般叫做基类或者父类public作为继承方式继承方式共有三种:publicprotectedprivateStuent类内部虽然没有实现name和age,但是它继承了person父类的name和age父类可以叫做基类,子类也可以......
  • 用C++编写一个简单的程序
    本篇文章将介绍如何使用C++编写一个简单的程序,该程序可以接收用户输入并将其转换为整数。在C++中,可以使用标准库中的<iostream>头文件来输出和输入数据。以下是一个简单的C++程序,可以读取用户输入,并将其转换为整数:#include<iostream>usingnamespacestd;intmain(){......
  • MATLAB2022安装教程
    MATLAB2022破解版下载一.下载连接https://pan.baidu.com/s/17OToNAw0w9Vvt-V278nCHw?pwd=kc8f二.解压Crack.rar文件三.安装步骤双击R2022b_Windows.iso加载文件,然后点击里面的setup.exe文件打开后点击右上角高级选项->我有文件安装秘钥->我同意,下一步输入秘钥.txt中的数......
  • C++傅里叶变换
    #include<stdio.h>#include<math.h>#definepi3.1415926typedefstruct{floatre;//reallyfloatim;//imaginary}complex,*pcomplex;complexcomplexadd(complexa,complexb)//复数加{complexrt;rt.re=a.re+b.re;......
  • OpenCV+dlib实现人脸关键点定位
    目录(1)了解工具包(2)加载人脸检测与关键点定位(3)数据预处理(4)人脸检测(5)绘制所有区域本文基于OpenCV并利用dlib工具包实现了对传入图像的人脸关键点定位。步骤:首先需要对传入图像进行预处理操作,其次,利用dlib工具包对整张图像进行人脸检测,然后,对检测到的每一个人脸框利用......
  • C++是如何工作的
     在#符号之后的都是预处理语句,编译器收到源文件,看到这条语句就先处理这条预处理语句因为在实际编译发送之前就被处理了 include含义:它需要找到这文件,将这个文件所有内容拷贝到现在的文件内,这些文件就是头文件 iostream:我们需要被调用的函数的声明std::out可以让我们在终......
  • 1011 A+B 和 C(C++)
    一、问题描述:给定区间[−231,231]内的3个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第1行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 C......
  • c++打卡第二十四天
    一、亲密数1、问题描述 2、设计思路①、我们可以设计函数计算一个数的因子,将这些因子相加到一起,返回和并对这个返回值重新调用求因子函数,如果这个函数返回值为A,那么这两个数为亲密数,打印出AB。②、求因子可以对A进行2~A的遍历,同时c除余d,如果余数为0,那么d就是c的因子。3、流......
  • 记一次C++后台开发面试拷打过程
    开头简单的自我介绍,面试官和我聊了聊天缓解个人紧张状况,然后就让开屏幕共享开视频做题目,做完以后,问了一些问题,就让等通知了,估计是凉了,不过这里且把当时做的笔试题目复盘一下吧!题目是ai做的题解,唉,AI都比我强,比我面试的时候解释的强多了,未来该何去何从啊...微*团队c++笔试题45......
  • C++趣味编程
    最佳存款方案1#include<iostream>2usingnamespacestd;3intmain()4{5doublex=1000;6for(inti=1;i<=5;i++)7{8x=x/(1+12*0.0063);9if(i!=5)10{11x=x+1000;12}13}14......