Opencv环境配置及踩坑
Opencv环境配置及踩坑
1.什么是Opencv
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和[Mac OS](https://baike.baidu.com/item/Mac OS/2840867)操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
当然了,上述是百度的解释,大一上学期现阶段,我拿Opencv主要是当个消遣的玩具,做做脸部识别、手势识别这些项目
OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持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的文章
题外话:虽然成功在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环境配置及踩坑的更多相关文章
- Pytorch及Yolov5环境配置及踩坑
Pytorch及Yolov5环境配置及踩坑 1.何为Yolov5 yolo是计算机视觉方面用来进行目标检测的一个十分出名的开源框架,我搜不到官方的对此概括性的定义,但实际上也没什么必要,更重要的是会使 ...
- pycharm+PyQt5+python最新开发环境配置,踩坑过程详解
安装工具:Pycharm 专业版2017.3PyQT5python3 pyqt5-tools 设置扩展工具的参数找到setting->tools->external tools,点击加号新 ...
- React Native Android配置部署踩坑日记
万事开头难 作为一只进入ECMAScript世界不久的菜鸟,已经被React Native的名气惊到了,开源一周数万星勾起了我浓烈的兴趣.新年新气象,来个HellWorld压压惊吧^_^(故意少打个' ...
- android开发环境配置和一些坑
要开发安卓应用,首先就是要配置安卓的开发环境. 新手在这个步骤时,会发现安卓的开发环境配置不是一般的麻烦,因为一般人是选择eclipse+a sdk+adt的,需要java环境,需要翻 墙,需要有非一 ...
- Flutter开发环境(Window)配置及踩坑记录
Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量原生 UI 的移动 SDK.Flutter 兼容现有的代码,免费且开源,在全球开发者中广泛被使用. F ...
- Linux 初始环境配置 以及避坑 (详细)
没事儿喜欢自己装个虚拟机捣鼓捣鼓,经过几次装一些Linux 经验, 有时候 电脑了 .想重新系统了,又要重新去配置环境, 有时候又要去查很多很多命令 . 记录分享下Linux 下配置开发环境以及桌面 ...
- AVT Vimba与OpenCV环境配置
近来,由于项目需求,需要使用AVT的一款相机采集图像并进行相应的算法处理.环境的配置过程较为复杂,特此记录,以做备忘.也给有需要的小伙伴们一些key point的分享. 搭建环境:Windows7 + ...
- spring零配置AOP踩坑指南
今天照着书,试着配了AOP(全注解),结果踩了各种坑,后来参考书附带的源码,终于走出来了,现在总结一下 除了spring的jar包以外,还需要导入以下包: 1.Spring核心配置文件beans.xm ...
- opencv 环境配置-windowsx64 +VS2017
opencv版本为4.1.1官方最新版本, https://sourceforge.net/projects/opencvlibrary/ 先配置本地工程环境: 右键我的电脑-属性 将bin的路径添加 ...
随机推荐
- Clickhouse 实现 MaterializedPostgreSQL
Clickhouse 实现 MaterializedPostgreSQL 开发环境:macOS 12.4 + docker 一.环境搭建 docker-compose.yml services: po ...
- Redis系列4:高可用之Sentinel(哨兵模式)
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 1 背景 从第三篇 Redis系列3:高可用之主从架构 ,我们知道,为Re ...
- MMDetection 使用示例:从入门到出门
前言 最近对目标识别感兴趣,想做一些有趣目标识别项目自己玩耍,本来选择的是 YOLOV5 的,但无奈自己使用 YOLOV5 环境训练模型时,不管训练多少次 mAP 指标总是为 0,而其它 pytorc ...
- Spring的Model 和 Map的原理
Model 和 Map 为什么在Model和Map中放值传入后会出现在request的上面. 9.1.源码解析 准备测试代码 @GetMapping("/goto") public ...
- Dubbo源码(七) - 集群
前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 集群(cluster)就是一组计算机,它们作为一个总体向用户提供一组网络资源.这些单个的计算机系 ...
- Java集合容器的深度理解
Java容器里有很多写好的容器API,这使我们很方便的可以存储.操作我们的数据. 下面是我写的容器的特点,一些容器的不同之处,从底层源码解析一下容器实现原理 一.常用的容器目录 上图可以看出,java ...
- Luogu3919 【模板】可持久化数组(主席树)
主席树模板题,注意空间\((n+m) \log(n)\) #include <iostream> #include <cstdio> #include <cstring& ...
- Git 08 IDEA撤销添加
参考源 https://www.bilibili.com/video/BV1FE411P7B3?spm_id_from=333.999.0.0 版本 本文章基于 Git 2.35.1.2 如果将不想添 ...
- MyBatis-Plus 代码生成
MyBatis-Plus官网的代码生成器配置不是特别全,在此整理了较为完整的配置,供自己和大家查阅学习. // 代码生成器 AutoGenerator mpg = new AutoGenerator( ...
- flask 可插拔视图
Flask 0.7 版本引入了可插拨视图.可插拨视图基于使用类来代替函数,其灵感来自于 Django 的通用视图.可插拨视图的主要用途是用可定制的.可插拨的视图来替代部分 实现.普通的函数视图 演示代 ...