Opencv环境配置及踩坑

1.什么是Opencv

OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉机器学习软件库,可以运行在LinuxWindowsAndroid和[Mac OS](https://baike.baidu.com/item/Mac OS/2840867)操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

当然了,上述是百度的解释,大一上学期现阶段,我拿Opencv主要是当个消遣的玩具,做做脸部识别、手势识别这些项目

OpenCV用C++语言编写,它具有C ++,PythonJavaMATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。

2.Opencv的配置

喜闻乐见的配环境时间,由于是第一次配环境(之前在Ubuntu上配置gcc环境太简单,不算入计数了),所以还是踩了不少坑,特地在此记录一下

相比于Tensorflow或是yolo,我觉得Opencv还是方便一些,Opencv仅仅只是一个库,我们安装就行了,yolo确实要装很多库,当然也可能是我的方法不对.

1.C++

第一次尝试:Clion+Mingw+Opencv+Cmake

首先毫不意外的,如果我们使用Mingw编译器进行环境配置,我个人是出于不想安装Vs这种庞然大物在我硬盘本来就不大的笔记本电脑上,所以我选择这套方案,但这套方案的弊病是十分的恼人,过程繁琐,中间会出现许多的问题(大部分还是因为国内网络政策原因)

我们在已经配置好Mingw编译器的Clion中想要安装Opencv,去官网下载下文件后,需要利用Cmake进行编译,在Opencv目录下新建一个文件夹,推荐命名为Mingw-build,之后打开Cmake,将Source code选为opencv目录下的sources,将要build的目标文件夹设为你新建的文件夹Mingw-build,点击configure,选择MingGW Makefiles,之后点击两次次configure,最后点击一次finish即可

第一次点击configure等待进度条结束后,列表中会出现很多红色项,再次点击一次configure,等待进度条走完之后就均会变白了,但其实在这些步骤中就已经出现很多问题了,首先在编译过程中实际上是需要联网下载许多动态链接库的,例如opencv_ ffmpeg_64.dll,不同人的情况不同,有些人全部都可以下载完成(我是没见过),运气好的只差一两个文件,我配置时则是五六个文件都无法下载(不知是不是校园网原因)

解决方法也不难,请访问sources目录下的3rdparty文件夹,在其中找到下载过程中的log文件,其中就包含了这些下载失败的文件的下载地址,粘贴链接到浏览器中进行下载即可,下载完毕后需要将对应的文件名改为log文件中对应的MD5码,值得一提的是,在这些文件中,因为官方太久没有进行维护,所以会存在部分文件的下载地址失效的问题,例如访问对应的连接后,页面为一些代码,将这些页面保存到本地,后缀改为.cmake即可

但即使这样,可能还是无法成功,这是有可能是环境变量未添加所导致的,或者也可以尝试自己在所新建的项目中编写cmake文件,但由于我折腾了一下午也没成功,所以我最后没有钻研下去,这里贴出一个链接所述这两种方案

链接


第二次尝试:Visual Studio+Vs编译器+Opencv

由于被第一次尝试折磨的不耐烦了,索性卸载了Clion一口气换了Vs(我个人不喜欢电脑上有重复的可以解决相同问题的软件),Visual Studio的环境配置比起上述方案就要简单的多,不得不感慨还是巨硬大公司有底气

这里推荐两种方法进行Opencv的安装,其中一种是使用Vcpkg,另一种是手动进行安装

我个人使用的方法是后者,跟着视频教程走就行.

链接

第二种方法比较懒人,但也得益于巨硬为我们提供的如此强大的工具,可能有很多人没听说过Vcpkg,这里贴一篇CSDN的文章

Vcpkg

题外话:虽然成功在Vs方案下配置了Opencv,但实际使用过程中非常不方便,很多项目中Python拥有强大的第三方库帮助实现辅助功能,而C++显得有些乏力

2.Python

Finally,还是选择了Python下使用Opencv的方案,第三方库实在是太香了

最主要是发现Python的pip太爽了,打开对应Python目录下的pip,输入一行指令pip install opencv-python即可自动安装完毕,新建一个项目import cv2即可

但上述安装方式仅仅只是安装了Opencv的一个基础包,还有一个拓展包也是我们必不可少的,输入pip install opencv-contrib-python即可

至此,折腾了一下午加一晚上的Opencv环境配置终于结束了

我也成功写出了我第一个人脸识别的项目,体会到了Opencv这个库的好玩之处,当然了,这仅仅只是皮毛中的皮毛,但不得不说,这比什么传统算法题,刷什么oj可有意思多了

Opencv环境配置及踩坑的更多相关文章

  1. Pytorch及Yolov5环境配置及踩坑

    Pytorch及Yolov5环境配置及踩坑 1.何为Yolov5 yolo是计算机视觉方面用来进行目标检测的一个十分出名的开源框架,我搜不到官方的对此概括性的定义,但实际上也没什么必要,更重要的是会使 ...

  2. pycharm+PyQt5+python最新开发环境配置,踩坑过程详解

    安装工具:Pycharm 专业版2017.3PyQT5python3 pyqt5-tools 设置扩展工具的参数找到setting->tools->external tools,点击加号新 ...

  3. React Native Android配置部署踩坑日记

    万事开头难 作为一只进入ECMAScript世界不久的菜鸟,已经被React Native的名气惊到了,开源一周数万星勾起了我浓烈的兴趣.新年新气象,来个HellWorld压压惊吧^_^(故意少打个' ...

  4. android开发环境配置和一些坑

    要开发安卓应用,首先就是要配置安卓的开发环境. 新手在这个步骤时,会发现安卓的开发环境配置不是一般的麻烦,因为一般人是选择eclipse+a sdk+adt的,需要java环境,需要翻 墙,需要有非一 ...

  5. Flutter开发环境(Window)配置及踩坑记录

    Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量原生 UI 的移动 SDK.Flutter 兼容现有的代码,免费且开源,在全球开发者中广泛被使用. F ...

  6. Linux 初始环境配置 以及避坑 (详细)

    没事儿喜欢自己装个虚拟机捣鼓捣鼓,经过几次装一些Linux 经验, 有时候  电脑了 .想重新系统了,又要重新去配置环境, 有时候又要去查很多很多命令 . 记录分享下Linux 下配置开发环境以及桌面 ...

  7. AVT Vimba与OpenCV环境配置

    近来,由于项目需求,需要使用AVT的一款相机采集图像并进行相应的算法处理.环境的配置过程较为复杂,特此记录,以做备忘.也给有需要的小伙伴们一些key point的分享. 搭建环境:Windows7 + ...

  8. spring零配置AOP踩坑指南

    今天照着书,试着配了AOP(全注解),结果踩了各种坑,后来参考书附带的源码,终于走出来了,现在总结一下 除了spring的jar包以外,还需要导入以下包: 1.Spring核心配置文件beans.xm ...

  9. opencv 环境配置-windowsx64 +VS2017

    opencv版本为4.1.1官方最新版本, https://sourceforge.net/projects/opencvlibrary/ 先配置本地工程环境: 右键我的电脑-属性 将bin的路径添加 ...

随机推荐

  1. 谷歌的SRE和开发是如何合作的

    本文是一篇比较有价值的.介绍SRE的文章.国内的所谓SRE职责其实并不明确,大部分其实还是干普通运维的事.但文中介绍的谷歌的运作方式起点还是相对比较高的,无论对SRE.对开发,甚至对公司都有很高的要求 ...

  2. JavaScript数组方法总结及手写

    目录 手写数组衍生方法 1.检测是否为数组 2.类数组转化为数组 3.数组扁平化 4.数组去重 5.数组使用Math.max 手写数组内置方法 1. Array.prototype.filter 2. ...

  3. rust里的内存对齐

    内存对齐主要遵循下面三个原则: 结构体变量的起始地址能够被其最宽的成员大小整除 结构体每个成员相对于起始地址的偏移能够被其自身大小整除,如果不能则在前一个成员后面补充字节 结构体总体大小能够被最宽的成 ...

  4. 常用的函数式接口_Prodicate接口_默认方法or&negate和常用的函数式接口_Predicate接口练习_集合信息筛选

    常用的函数式接口_Prodicate接口_默认方法or&negate OR package com.yang.Test.PredicateStudy; import java.util.fun ...

  5. python 异常捕捉与异常处理

    简介 在实际开发中,为了防止异常界面直接被用户看到,往往我们会采用捕捉异常的方式来进一步处理异常. 异常捕捉 如下代码由于下标越界会导致异常 data = range(10) print(data[1 ...

  6. JavaScript 里三个点 ...,可不是省略号啊···

    摘要:Three dots ( - ) in JavaScript. 本文分享自华为云社区<JavaScript 里三个点 ... 的用法>,作者: Jerry Wang . Rest P ...

  7. LuoguP4719 【模板】动态 DP(动态DP,LCT)

    \(n \times m\)的算法谁都会吧,注意到每次修改影响的仅是一部分的信息,因此可思考优化. 将每个节点对应一个矩阵\(\begin{bmatrix} g[v][0] & g[v][0] ...

  8. Docker 01 概述

    参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...

  9. React报错之Cannot find namespace context

    正文从这开始~ 总览 在React中,为了解决"Cannot find namespace context"错误,在你使用JSX的文件中使用.tsx扩展名,在你的tsconfig. ...

  10. java-Date类与集合(上)

    1.1java.util.Data data的每一个势力用于表示一个时间点.由于打他存在设计缺陷,所以大部分操作时间的方法都被声明为过时的,不建议使用 打他的每一个实力内维护这一个long值,该值表示 ...