GAMES101 OpenCV环境安装

news2024/11/20 3:28:35

文章目录

  • Opencv 库编译
    • Step 1.下载源码
    • Step 2. 使用CMake编译
    • Step3. 解决CMake 过程中的报错
      • 错误1: 错误的Python版本:
        • 错误1 解决办法
      • 错误2:下载ippicv_2020_win_ia32_20191018_general.zip失败
        • 错误2 解决办法
      • 错误3:ffmpeg相关文件下载失败
        • 错误3 解决办法
    • Step 4. 配置opencv_contrib
        • 继续报错
    • Step 5. 选择BUILD_opencv_world选项
    • Step 6. 点击Generate
    • Step 7. 编译OpenCV.sln工程
      • 编译时遇到的报错
      • 编译成功后生成的库和dll,以及include
  • 添加环境变量
  • 测试是否安装成功

Opencv 库编译

作业2中用到了OpenCV

Step 1.下载源码

  1. 下载OpenCV 源码 OpenCV 4.5.4
  2. 下载OpenCV_contrib OpenCV_contrib 4.5.4
    注意:这两个源码的版本号要一致

Step 2. 使用CMake编译

  1. 将源码解压后,不要放在有中文路径的目录
  2. 使用管理员权限打开CMake, 一开始未使用,发现点击Configure时会报错,使用管理员权限打开CMake后,点击Configure未报错。
  3. 源码目录:opencv-4.5.4
  4. build目录:OpenCV_build(以下简称build目录)
    在这里插入图片描述

注意:选择版本,我这里是x64 版本。
为什么要选x64版本原因

“因为代码中有使用std::optional这个特性,这个特性是c++17中才有的,这个坑反应了好久才找到原因。
改完之后发现使用默认的x86设置,std::optional依然会报错,所以选了x64之后,环境就彻底配好了。所以第一步对应的库也要安装64位的。”

Step3. 解决CMake 过程中的报错

上述在Config过程中,会报很多错误,主要是一些下载的原因:

错误1: 错误的Python版本:

CMake’s ‘find_host_package(PythonInterp 2.7)’ found wrong Python version

Found PythonInterp: C:/Program Files/Python310/python.exe (found suitable version "3.10.11", minimum required is "2.7") 
CMake Warning at cmake/OpenCVDetectPython.cmake:81 (message):
  CMake's 'find_host_package(PythonInterp 2.7)' found wrong Python version:

  PYTHON_EXECUTABLE=C:/Program Files/Python310/python.exe

  PYTHON_VERSION_STRING=3.10.11

  Consider providing the 'PYTHON2_EXECUTABLE' variable via CMake command line
  or environment variables

Call Stack (most recent call first):
  cmake/OpenCVDetectPython.cmake:271 (find_python)
  CMakeLists.txt:622 (include)
  

错误1 解决办法

修改opencv-4.5.4\cmake\OpenCVDetectPython.cmake最后部分内容

if(PYTHON_DEFAULT_EXECUTABLE)
    set(PYTHON_DEFAULT_AVAILABLE "TRUE")
elseif(PYTHON3_EXECUTABLE AND PYTHON3INTERP_FOUND)
    # Use Python 3 as default Python interpreter
    set(PYTHON_DEFAULT_AVAILABLE "TRUE")
    set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON3_EXECUTABLE}")
elseif(PYTHON2_EXECUTABLE AND PYTHON2INTERP_FOUND)
    # Use Python 2 as fallback Python interpreter (if there is no Python 3)
    set(PYTHON_DEFAULT_AVAILABLE "TRUE")
    set(PYTHON_DEFAULT_EXECUTABLE "${PYTHON2_EXECUTABLE}")
endif()

参考链接1.How to use Cmake to build opencv with python 3 instead of python 2
参考链接2.Install OpenCV GPU with CUDA for Windows10

错误2:下载ippicv_2020_win_ia32_20191018_general.zip失败

Download: ippicv_2020_win_intel64_20191018_general.zip
Download failed

IPPICV: Download: ippicv_2020_win_intel64_20191018_general.zip
Try 1 failed
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
  IPPICV: Download failed: 35;"SSL connect error"

  For details please refer to the download log file:

  C:/Resource/OpenCV/OpenCV_build/CMakeDownloadLog.txt

Call Stack (most recent call first):
  3rdparty/ippicv/ippicv.cmake:37 (ocv_download)
  cmake/OpenCVFindIPP.cmake:259 (download_ippicv)
  cmake/OpenCVFindLibsPerf.cmake:12 (include)
  CMakeLists.txt:727 (include)

错误2 解决办法

  1. 下载ippicv_2020_win_intel64_20191018_general.zip压缩文件
    打开build目录下的CMakeDownloadLog.txt文件,里面会提示下载的链接,
https://raw.githubusercontent.com/opencv/opencv_3rdparty/xxxxxx/ippicv/ippicv_2020_win_intel64_20191018_general.zip
  1. 拷贝压缩文件
    直接在浏览器内下载下来,然后将文件保存到opencv-4.5.4/3dparty/ippicv文件夹中
    在这里插入图片描述
  2. 修改ippicv.cmake 文件
  set(THE_ROOT "${OpenCV_BINARY_DIR}/3rdparty/ippicv")
  # ocv_download(FILENAME ${OPENCV_ICV_NAME}
               # HASH ${OPENCV_ICV_HASH}
               # URL
                 # "${OPENCV_IPPICV_URL}"
                 # "$ENV{OPENCV_IPPICV_URL}"
                 # "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
               # DESTINATION_DIR "${THE_ROOT}"
               # ID IPPICV
               # STATUS res
               # UNPACK RELATIVE_URL)

错误3:ffmpeg相关文件下载失败

opencv_videoio_ffmpeg.dll
opencv_videoio_ffmpeg_64.dll
ffmpeg_version.cmake

FFMPEG: Download: opencv_videoio_ffmpeg.dll
Try 1 failed
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
  FFMPEG: Download failed: 35;"SSL connect error"

  For details please refer to the download log file:

  C:/Resource/OpenCV/OpenCV_build/CMakeDownloadLog.txt

Call Stack (most recent call first):
  3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
  modules/videoio/cmake/detect_ffmpeg.cmake:14 (download_win_ffmpeg)
  modules/videoio/cmake/init.cmake:7 (include)
  modules/videoio/cmake/init.cmake:11 (add_backend)
  cmake/OpenCVModule.cmake:298 (include)
  cmake/OpenCVModule.cmake:361 (_add_modules_1)
  cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
  CMakeLists.txt:917 (ocv_register_modules)


FFMPEG: Download: opencv_videoio_ffmpeg_64.dll
Try 1 failed
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
  FFMPEG: Download failed: 35;"SSL connect error"

  For details please refer to the download log file:

  C:/Resource/OpenCV/OpenCV_build/CMakeDownloadLog.txt

Call Stack (most recent call first):
  3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
  modules/videoio/cmake/detect_ffmpeg.cmake:14 (download_win_ffmpeg)
  modules/videoio/cmake/init.cmake:7 (include)
  modules/videoio/cmake/init.cmake:11 (add_backend)
  cmake/OpenCVModule.cmake:298 (include)
  cmake/OpenCVModule.cmake:361 (_add_modules_1)
  cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
  CMakeLists.txt:917 (ocv_register_modules)


FFMPEG: Download: ffmpeg_version.cmake
Try 1 failed
CMake Warning at cmake/OpenCVDownload.cmake:202 (message):
  FFMPEG: Download failed: 35;"SSL connect error"

  For details please refer to the download log file:

  C:/Resource/OpenCV/OpenCV_build/CMakeDownloadLog.txt

Call Stack (most recent call first):
  3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)
  modules/videoio/cmake/detect_ffmpeg.cmake:14 (download_win_ffmpeg)
  modules/videoio/cmake/init.cmake:7 (include)
  modules/videoio/cmake/init.cmake:11 (add_backend)
  cmake/OpenCVModule.cmake:298 (include)
  cmake/OpenCVModule.cmake:361 (_add_modules_1)
  cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
  CMakeLists.txt:917 (ocv_register_modules)

错误3 解决办法

  1. 下载缺失的两个文件
    参考CMakeDownloadLog.txt 里面的链接下载dll文件, ffmpeg_version.cmake的链接另存为文件,最后得到三个文件,如下所示:
    在这里插入图片描述
  2. 复制文件到opencv-4.5.4/3dparty/ffmepg目录
    在这里插入图片描述
  3. 修改ffmpeg.cmake文件
 set(status TRUE)
  # foreach(id ${ids})
    # ocv_download(FILENAME ${name_${id}}
               # HASH ${FFMPEG_FILE_HASH_${id}}
               # URL
                 # "$ENV{OPENCV_FFMPEG_URL}"
                 # "${OPENCV_FFMPEG_URL}"
                 # "https://raw.githubusercontent.com/opencv/opencv_3rdparty/${FFMPEG_BINARIES_COMMIT}/ffmpeg/"
               # DESTINATION_DIR ${FFMPEG_DOWNLOAD_DIR}
               # ID FFMPEG
               # RELATIVE_URL
               # STATUS res)
    # if(NOT res)
      # set(status FALSE)
    # endif()
  # endforeach()

但仍然不够,到这里再次执行Configure时,会继续报错:

  CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16 (include):
  include could not find requested file:

    C:/Resource/OpenCV/OpenCV_build/3rdparty/ffmpeg/ffmpeg_version.cmake
Call Stack (most recent call first):
  modules/videoio/cmake/init.cmake:7 (include)
  modules/videoio/cmake/init.cmake:11 (add_backend)
  cmake/OpenCVModule.cmake:298 (include)
  cmake/OpenCVModule.cmake:361 (_add_modules_1)
  cmake/OpenCVModule.cmake:385 (ocv_glob_modules)
  CMakeLists.txt:917 (ocv_register_modules)

参考链接Error at modules/videoio/cmake/detect_ffmpeg.cmake
网友的解决方案

I have encountered the same problem,mainly because cmake can't find ffmpeg_version.cmake file:
the src code file has a 3rdparty, 
and your build dir has a 3rdparty, 
cmake only search your build dir for ffmpeg_version.cmake, 
so just copy the src 3rdparty's ffmpeg to the build dir's 3rdparty. bingo! problem fixed.

因此,按照上述描述,将opencv-4.5.4/3rdparty/ffmpeg整个文件夹拷贝到build目录下的3rdparty目录下,如下所示:

在这里插入图片描述

Step 4. 配置opencv_contrib

在这里插入图片描述

继续报错

在配置opencv_contrib后,点击configure,会继续报错,还是因为没有下载成功的原因,
主要是wechat_qrcode 和 xfeatures2d 相关的文件。根据CMakeDownloadLog.txt里面的提示链接,手动下载缺失的文件,最后存放到build目录下的downloads目录下对应的文件夹:最后文件夹里面的文件如下所示。

  • wechat_qrcode
    在这里插入图片描述

  • xfeatures2d
    在这里插入图片描述
    至此,再次点击Congifure后,没有出现错误。

Step 5. 选择BUILD_opencv_world选项

这样,最后的库文件是一个dll文件。
OpenCV cmake配置项BUILD_opencv_world的说明

按照默认的CMakeLists.txt配置,BUILD_opencv_world默认是OFF状态,没有勾选。
编译生成的项目,会在build\lib\Debug目录下生成大量的lib和dll文件。
例如:有时网上设置项目环境时有人在链接器附加依赖项时需添加下列lib,当照着配置后会报错找不到…lib,在你的/x64/lib文件夹下压根没这些东西是因为你在编译的时候勾选了BUILD_opencv_world。
CMake中有一个选项名为BUILD_opencv_world,默认是不勾选的,它可以把所有的组件综合到一个名为opencv_world310d.lib或opencv_world310.lib的文件中,使以后配置工程时输入此单一文件即可。

在这里插入图片描述
如果编译成功,会生成下面两个lib
在这里插入图片描述

Step 6. 点击Generate

如果成功,显示Generate done.

  Install to:                    C:/Resource/OpenCV/OpenCV_build/install
-----------------------------------------------------------------

Configuring done
Generating done

生成OpenCV.sln工程

Step 7. 编译OpenCV.sln工程

菜单栏->生成->选择生成的项目配置。
注意:这里如果没有安装Python的Debug版本,在编译的时候,会报错。
在这里插入图片描述

编译时遇到的报错

LINK : fatal error LNK1104: 无法打开文件“python310_d.lib”

报错的原因参考无法打开pythonxxx_d.lib

所以应该是安装Python的时候,没有选择Debug版本。后来我重新卸载了已安装的Python,重新安装时选择Python Debug版本。
重新编译后成功

编译成功后生成的库和dll,以及include

  • install
    里面是我们需要的lib、dll以及头文件
    在这里插入图片描述
    在这里插入图片描述

添加环境变量

系统属性->环境变量->Path->添加opencv 库路径
在这里插入图片描述

测试是否安装成功

新建一个空的工程:

  • 设置工程属性
    在这里插入图片描述

在这里插入图片描述

  • Demo
#include	<iostream>
#include	<opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main() {
	Mat img = imread("C:\\Resource\\OpenCV\\OpenCV_Project\\OpenCVTest\\x64\\Debug\\scenetext01.jpg");
	imshow("img", img);
	waitKey();
}
  • 输出
    在这里插入图片描述

  • 弹出的INFO信息
    在这里插入图片描述
    关于这些信息

  • 如何避免这些错误
    参考这个网友提供的,我猜是因为Configure的时候没有勾选相关的内容勾选相关选项
    在这里插入图片描述
    但是我这里没有试验,因为编译库的话又要好久~~

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

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

相关文章

ROS学习笔记(0):几个重要概念:节点、消息、主题、服务

1、节点&#xff08;node&#xff09; 节点是进行运算任务的进程。一个系统可以由很多节点组成&#xff0c;节点也可以称为软件模块。 ROS是以节点的形式开发的&#xff0c;节点是根据其目的&#xff0c;可以细分的可执行程序的最小单位。 主节点 由于机器人的元器件很多&…

win10查看、关闭和开启多个mysql服务

我的之前安装了2个MySQL版本&#xff0c;一个是MySQL8.0.17&#xff0c;一个是MySQL5.7.19 为什么要查看怎么关闭MySQL服务?如果是个人电脑&#xff0c;我觉得开启一个服务相当于开启一个进程&#xff0c;可能会占用部分内存。如果自己是游戏摆烂状态&#xff08;非学习状态&…

R语言forestploter包优雅的绘制孟德尔随机化研究森林图

在既往文章中&#xff0c;我们对孟德尔随机化研究做了一个简单的介绍。我们可以发现&#xff0c;使用TwoSampleMR包做出来的森林图并不是很美观。今天我们使用R语言forestploter包优雅的绘制孟德尔随机化研究森林图。 使用TwoSampleMR包做出来的森林图是这样的 而很多SCI文章…

qt和vue的交互

1、首先在vue项目中引入qwebchannel /******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Copyright (C) 2016 Klarlvdalens Datakonsult AB, a KDAB Group company, infokdab.com, author Milian …

简易评分系统

目录 一、实验目的 二、操作环境 三、实验内容和过程 1.实验内容 2.代码 2.1 用户验证功能 2.2 菜单函数 2.3 评分功能 四、结果分析 总体的输出结果&#xff1a; 保存文件成功截图&#xff1a; 五、小结 一、实验目的 1.巩固和提高学生学过的基础理论和专业知识&am…

windows下安装consul、springboot整合consul

Spring Cloud Consul通过自动配置和绑定到Spring Environment和其他Spring编程模型习语&#xff0c;为Spring Boot应用程序提供Consul集成。通过一些简单的注解&#xff0c;可以快速启用和配置应用程序内的常用模式&#xff0c;并使用Hashicorp的Consul构建大型分布式系统。提供…

使用Dreambooth LoRA微调SDXL 0.9

本文将介绍如何通过LoRA对Stable Diffusion XL 0.9进行Dreambooth微调。DreamBooth是一种仅使用几张图像(大约3-5张)来个性化文本到图像模型的方法。 本教程基于通过LoRA进行Unet微调&#xff0c;而不是进行全部的训练。LoRA是在LoRA: Low-Rank Adaptation of Large Language …

如何通过CRM系统减低客户流失率并提高销售业绩?

销售人员如何提高业绩&#xff0c;减低客户流失率&#xff1f;通过CRM客户管理系统与客户建立良好的客户关系、提升客户体验助力销售人员业绩节节攀升&#xff0c;降低客户流失率。接下来我们就来说一说CRM系统如何实现的&#xff1f; 1.全渠道沟通提升客户体验 只有足够多的…

搜索结果处理

1、排序 #sort排序 GET /hotel/_search {"query": {"match_all": {}},"sort": [{"score": "desc"},{"price": "asc"}] }#找到121.6&#xff0c;31周围的酒店&#xff0c;距离升序排序 GET /hotel/_sea…

前端学习——JS进阶 (Day2)

深入对象 创建对象三种方式 构造函数 小练习 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…

python_openpyxl常用语法记录

目录 写在前面&#xff1a; 开始 工作薄 and 工作表 操作单元格 访问&#xff08;调用&#xff09;单个单元格 访问&#xff08;调用&#xff09;多个单元格 保存工作薄 用例 例&#xff1a;简单数据和条形图 操作样式 样式的默认值 单元格样式和命名样式 单元格样…

配置Hadoop_0

配置Hadoop_0 1配置Hadoop100模板虚拟机1.1配置Hadoop100模板虚拟机硬件1.2配置Hadoop100模板虚拟机软件1.3配置Hadoop100模板虚拟机IP地址1.4配置Hadoop100模板虚拟机主机名称/主机名称映射1.5配置Hadoop100模板虚拟机远程操作工具 1配置Hadoop100模板虚拟机 Hadoop100 内存…

编译给IOS平台用的liblzma库(xz与lzma)

打开官方网: XZ Utils 新工程仓库: git clone https://git.tukaani.org/xz.git git clone https://github.com/tukaani-project/xz 旧工程仓库: git clone https://git.tukaani.org/lzma.git 旧版本工程编译: 先进行已下载好的lzma目录 执行./autogen.sh生成configure配置…

233. 数字 1 的个数

题目描述&#xff1a; 主要思路&#xff1a; 寻找1的个数主要分为两个部分&#xff1a;完整的1和取余的1。 完整的1&#xff1a;从个位一直到最高位&#xff0c;例如十位上的1可以出现10次&#xff0c;10-19&#xff0c;然后看他的高位&#xff0c;看看可以出现几轮循环。 取余…

QListWidget 小节

QListWidget 小节 QListWidget 简介举例UI设计头文件源文件 QListWidget 简介 以下是 QListWidget 常用函数的一些说明&#xff1a; addItem(item)&#xff1a;向列表中添加一个项。 addItems(items)&#xff1a;向列表中添加多个项。 clear()&#xff1a;清空列表中的所有项…

射线与物质的相互作用

射线与物质的相互作用 射线与物质的相互作用概要 电离——核外层电子克服束缚成为自由电子&#xff0c;原子成为正离子激发——使核外层电子由低能级跃迁到高能级而使原子处于激发状态&#xff0c;退激发光 射线 致电离辐射 慢化 电离损失&#xff1a;带电粒子与靶物质原子…

this指针/闭包及作用域

一.作用域链 1.通过一个例子 let aglobalconsole.log(a);//globalfunction course(){let bjsconsole.log(b);//jssession()function session(){let cthisconsole.log(c);//Windowteacher()//函数提升function teacher(){let dstevenconsole.log(d);//stevenconsole.log(test1,…

【unity之IMGUI实践】单例模式管理数据存储【二】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

FocusState, SubmitTextField 的使用

1. FocusState 输入文本添加焦点状态 1.1 实现 /// 输入文本焦点状态 struct FocusStateBootcamp: View {// 使用枚举enum OnboardingFields: Hashable{case usernamecase password}//FocusState private var usernameInFocus: BoolState private var username: String "…

两分钟python发个邮件

python简单发个邮件 直接上代码测试 之前spring boot简单发送发送个邮件大约5min&#xff0c;ennn这个python发个邮件两三分钟吧 直接上代码 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMETextclass MailTest(object):def…