OpenCV介绍与GUI特征(一)

news2024/12/23 16:52:32

目录

  • 0.1 OpenCV-Python教程简介
      • OpenCV
      • OpenCV-Python
      • OpenCV-Python教程
      • OpenCV需要你!!!
      • 贡献者
  • 0.2 在Windows中安装OpenCV-Python
      • 目标
      • 从预制的二进制文件中安装OpenCV
      • 从源代码构建OpenCV
      • 练习
  • 0.3 在Ubuntu中安装OpenCV-Python
      • 目标
      • 从预制的二进制文件中安装OpenCV-Python
      • 从源码构建OpenCV
      • 必要的构建依赖项
      • 可选的依赖性
      • 下载OpenCV
      • 配置和安装

0.1 OpenCV-Python教程简介

翻译及二次校对:cvtutorials.com

编辑者:廿瓶鲸(和鲸社区Siby团队成员)

OpenCV

OpenCV于1999年由Gary Bradsky在英特尔创建,第一个版本于2000年问世。Vadim Pisarevsky加入Gary Bradsky,管理英特尔的俄罗斯软件OpenCV团队。2005年,OpenCV被用在Stanley上,该车赢得了2005年的DARPA大挑战。后来,在Willow Garage的支持下,在Gary Bradsky和Vadim Pisarevsky的领导下,它被积极地继续进行开发。现在,OpenCV支持与计算机视觉和机器学习有关的众多算法,并在日渐扩大。

OpenCV支持多种编程语言,如C++、Python、Java等,并可在不同平台上使用,包括Windows、Linux、OS X、Android和iOS。基于CUDA和OpenCL的高速GPU操作的接口也在积极开发中。

OpenCV-Python是OpenCV的Python API,结合了OpenCV C++ API和Python语言的最佳品质。

OpenCV-Python

OpenCV-Python是一个Python绑定库,旨在解决计算机视觉问题。

Python是一种通用的编程语言,由Guido van Rossum发起,很快就变得非常流行,主要是因为它的简单性和代码的可读性。它使程序员能够在不降低可读性的情况下用较少的代码行来表达想法。

与C/C++等语言相比,Python比较慢。也就是说,Python可以很容易地用C/C++进行扩展,这使得我们可以用C/C++编写计算密集型代码,并创建可以作为Python模块使用的Python包装器。这给我们带来了两个好处:第一,代码的速度和原来的C/C++代码一样快(因为它是实际的C++代码在后台工作);第二,用Python编码比C/C++更容易。OpenCV-Python是对原始的OpenCV C++实现的一个Python包装器。

OpenCV-Python使用了Numpy,它是一个高度优化的数字运算库,具有MATLAB式的语法。所有的OpenCV数组结构都被转换为Numpy数组。这也使得它更容易与其他使用Numpy的库集成,如SciPy和Matplotlib。

OpenCV-Python教程

OpenCV推出了一套新的教程,它将指导你了解OpenCV-Python中的各种功能。本指南主要是针对OpenCV 3.x版本(尽管大部分教程也适用于OpenCV 2.x)。

建议事先了解Python和Numpy的知识,因为本指南中不会涉及这些知识。为了使用OpenCV-Python编写优化的代码,熟练掌握Numpy是必须的。

本教程最初是由Abid Rahman K.在Alexander Mordvintsev的指导下作为Google Summer of Code 2013项目的一部分而开始的。

OpenCV需要你!!!

由于OpenCV是一个开源计划,我们欢迎所有人对库、文档和教程做出贡献。如果你在本教程中发现任何错误(从一个小的拼写错误到代码或概念中的严重错误),请随时通过在GitHub中克隆OpenCV并提交拉动请求来纠正它。OpenCV的开发人员会检查你的拉动请求,给你重要的反馈,(一旦通过审查者的批准)它将被合并到OpenCV中。这样你就成为一个开源的贡献者 😃

随着OpenCV-Python中新模块的加入,本教程将不得不进行扩展。如果你熟悉某种特定的算法,并能写出包括该算法的基本理论和显示使用实例的代码在内的教程,请这样做。

请记住,我们一起可以使这个项目获得巨大的成功!!。

贡献者

以下是向OpenCV-Python提交教程的贡献者名单。

1.Alexander Mordvintsev (GSoC-2013导师)
2.Abid Rahman K. (GSoC-2013实习生)

0.2 在Windows中安装OpenCV-Python

翻译及二次校对:cvtutorials.com

目标

在本教程中

  • 我们将学习如何在Windows系统中设置OpenCV-Python。

下面的步骤是在Windows 7-64位机器上用Visual Studio 2010和Visual Studio 2012测试的。屏幕截图显示的是VS2012。

从预制的二进制文件中安装OpenCV

1.下面的Python软件包将被下载并安装到它们的默认位置。 Python 3.x (3.4+) 或 Python 2.7.x 从这里下载。 Numpy软件包(例如,使用 pip install numpy 命令)。 Matplotlib (pip install matplotlib) (Matplotlib是可选的,但推荐使用,因为我们在教程中经常使用它)。
2.将所有软件包安装到它们的默认位置。如果是Python 2.7,Python将被安装到C:/Python27/。
3.安装后,打开Python IDLE。输入import numpy并确保Numpy工作正常。
4.从GitHub或SourceForge网站下载最新的OpenCV版本,双击解压。
5.转到opencv/build/python/2.7文件夹。
6.将cv2.pyd复制到C:/Python27/lib/site-packages。
7.打开Python IDLE,在Python终端输入以下代码。

>>> import cv2 as cv
>>> print( cv.__version__ )

如果打印出来的结果没有任何错误,恭喜你!!!你已经成功地安装了OpenCV-Python。

从源代码构建OpenCV

1.下载并安装Visual Studio和CMake。

  • Visual Studio 2012
  • CMake

2.下载并安装必要的Python软件包到其默认位置

  • Python
  • Numpy

在这种情况下,我们使用的是32位的Python软件包的二进制文件。但是如果你想在x64下使用OpenCV,就必须安装64位的Python软件包。问题是,没有Numpy的官方64位二进制文件。你必须自己构建它。为此,你必须使用用于构建Python的同一个编译器。当你启动Python IDLE时,它会显示编译器的详细信息。你可以在这里得到更多的信息。所以你的系统必须有相同的Visual Studio版本,并从源代码构建Numpy。 另一种拥有64位Python包的方法是使用第三方提供的现成的Python发行版,如Anaconda、Enthought等。它的体积会比较大,但会有你需要的一切。所有的东西都在一个单独的外壳里。你也可以下载32位的版本。

3.确保Python和Numpy工作正常。

4.下载OpenCV源代码。可以从Sourceforge(官方发布版本)或Github(最新版本)下载。

5.将其解压到一个文件夹中,opencv并在其中创建一个新的文件夹build。

6.打开CMake-gui(开始>所有程序>CMake-gui

7.按如下方式填写字段(见下图)。

  • 点击浏览源代码…,找到opencv文件夹。
  • 点击浏览构建…并找到我们创建的构建文件夹。
  • 点击 “配置”。

    Image Name
  • 它将打开一个新的窗口来选择编译器。选择适当的编译器(这里是Visual Studio 11)并点击完成。

    Image Name
  • 等待分析结束。

    8.你会看到所有的字段都被标记为红色。点击WITH字段来展开它。它决定你需要哪些额外的功能。所以要标记适当的字段。请看下面的图片。

    Image Name


    9.现在点击BUILD字段来展开它。前面几个字段是配置构建方法。请看下面的图片。

    Image Name
    10.剩余的字段指定要构建的模块。由于OpenCV-Python还不支持GPU模块,你可以完全避免它以节省时间(但如果你需要用到,请保留它)。请看下面的图片。

Image Name

11.现在点击ENABLE字段来展开它。确保ENABLE_SOLUTION_FOLDERS未被选中(Visual Studio Express版不支持解决方案文件夹)。请看下面的图片。

Image Name

12.还要确保在PYTHON字段中,所有的内容都被填满。(忽略PYTHON_DEBUG_LIBRARY)。) 见下面的图片。

Image Name

13.最后点击 "生成 "按钮。

14.现在去我们的opencv/build文件夹。在那里你会发现OpenCV.sln文件。用Visual Studio打开它。

15.检查构建模式为Release而不是Debug。

16.在解决方案资源管理器中,右键单击解决方案(或ALL_BUILD)并构建它。它将需要一些时间来完成。

17.再次,右击INSTALL并构建它。现在OpenCV-Python将被安装。

Image Name

18.打开Python IDLE,输入’import cv2 as cv’。如果没有错误,说明它安装正确。

练习

如果你有一台windows机器,从源码上编译OpenCV。如果你遇到任何问题,请访问OpenCV论坛并说明你的问题。

0.3 在Ubuntu中安装OpenCV-Python

翻译及二次校对:cvtutorials.com

目标

在本教程中,我们将学习如何在Ubuntu系统中设置OpenCV-Python。下面的步骤是针对Ubuntu 16.04和18.04(都是64位)的测试。

OpenCV-Python可以通过两种方式安装在Ubuntu中。

  • 从Ubuntu软件库中的预先编译好的二进制文件中安装
  • 从源代码中编译。

另一件重要的事情是需要额外的库。OpenCV-Python只需要Numpy。但在本教程中,我们也使用了Matplotlib来实现一些简单而漂亮的绘图目的(与OpenCV相比,我觉得它好得多)。Matplotlib是可选的,但强烈推荐。同样,我们还将看到IPython,一个交互式Python终端,这也是强烈推荐的。

从预制的二进制文件中安装OpenCV-Python

这种方法在只用于编程和开发OpenCV应用程序时效果最好。

用下面的命令在终端安装python3-opencv包(以root用户身份)。

$ sudo apt-get install python3-opencv

打开Python IDLE (或IPython),在Python终端输入以下代码。

import cv2 as cv
print(cv.__version__)

如果打印出来的结果没有任何错误,恭喜你!!!你已经成功地安装了OpenCV-Python。

这很容易。但是这里面有一个问题。Apt软件库可能并不总是包含最新版本的OpenCV。所以要想获得最新的源代码,最好是采用下一个方法,即从源代码编译。另外,在某些时候,如果你想为OpenCV做贡献,你会需要这个方法。

从源码构建OpenCV

从源码编译一开始可能有点复杂,但一旦你成功了,就没有什么复杂的了。

首先,我们要安装一些依赖项。有些是必须的,有些是可选的。如果你不愿意,你可以跳过可选的依赖。

必要的构建依赖项

我们需要CMake来配置安装,GCC来编译,Python-devel和Numpy来构建Python绑定等等。

sudo apt-get install cmake
sudo apt-get install gcc g++

为了支持Python3,使用如下命令:

sudo apt-get install python3-dev python3-numpy

接下来我们需要GTK对GUI功能的支持,相机支持(v4l),媒体支持(ffmpeg,gstreamer)等。

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

为了支持gtk2:

sudo apt-get install libgtk2.0-dev

为了支持gtk3:

sudo apt-get install libgtk-3-dev

可选的依赖性

以上的依赖性足以让你在Ubuntu机器上安装OpenCV。但根据你的要求,你可能需要一些额外的依赖。下面给出了这些可选依赖项的清单。你可以不安装它,也可以安装它,你自己决定:)

OpenCV支持图像格式的文件有PNG、JPEG、JPEG2000、TIFF、WebP等。但它可能有点旧。如果你想得到最新的库,你可以安装这些格式的系统库的开发文件。

sudo apt-get install libpng-dev
sudo apt-get install libjpeg-dev
sudo apt-get install libopenexr-dev
sudo apt-get install libtiff-dev
sudo apt-get install libwebp-dev

如果你使用的是Ubuntu 16.04,你也可以安装libjasper-dev来增加对JPEG2000格式的系统级支持。

下载OpenCV

从OpenCV的GitHub仓库下载最新的源代码。(如果你想为OpenCV做贡献,请选择这个。为此,你需要先安装Git)

$ sudo apt-get install git
$ git clone https://github.com/opencv/opencv.git

它将在当前目录下创建一个文件夹 “opencv”。克隆可能需要一些时间,这取决于你的网速。

现在打开一个终端窗口,导航到下载的 "opencv "文件夹。创建一个新的 "build "文件夹并导航到它。

$ mkdir build
$ cd build

配置和安装

现在我们有了所有需要的依赖,让我们来安装OpenCV。安装必须用CMake进行配置。它指定要安装哪些模块,安装路径,要使用哪些额外的库,是否要编译文档和例子等等。这些工作大部分都是通过配置好的默认参数自动完成的。

以下命令通常用于配置OpenCV库的构建(从构建文件夹中执行)。

$ cmake ../

OpenCV默认为 “Release “构建类型,安装路径为”/usr/local”。关于CMake选项的其他信息,请参考OpenCV C++编译指南。

你应该在CMake的输出中看到这几行(它们意味着Python被正确找到)。

--   Python 3:
--     Interpreter:                 /usr/bin/python3.4 (ver 3.4.3)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.8.2)
--     packages path:               lib/python3.4/dist-packages

现在你用 "make "命令建立文件,用 "make install "命令安装它。

$ make
# sudo make install

安装结束了。所有文件都安装在"/usr/local/"文件夹中。打开一个终端,尝试导入 “cv2”。

import cv2 as cv
print(cv.__version__)

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

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

相关文章

Revit怎么绘制结构梁?一键生成梁?

绘制结构梁是Revit基础的功能,对于不少刚接触Revit的小伙伴来说似乎还无从下手,今天就让小编来告诉大家在Revit中绘制结构梁的方法。 一、Revit中结构梁图文绘制过程 首先,我们选择“结构”选项卡中的“梁”工具,点击选择梁的类…

android12 displayArea学习

一:数据结构分析 1:android 12 WindowContainer 的类继承关系如下 下图为 WindowContainer 简要的对象图。 下图是 Aosp默认的display层次结构对象图。 Aosp定义的feature有如下 FEATURE_ROOT 0; FEATURE_DEFAULT_TASK_CONTAINER 1; FEATURE_WINDOW_…

DNS服务器 - 理论

DNS服务器1. 概念2. DNS域名结构3. 域名的分级4. 域名服务器5. 域名解析过程5.1 递归查询与迭代查询5.2 解析流程1. 迭代查询2. 递归查询6. 高速缓存:7. 加上主机缓存后的DNS解析流程8. 常见的域名解析记录9. DNS正向解析和反向解析1. 概念 DNS服务器(D…

C++指针与其它复合类型

目录 前言: 1.指针与字符串 1.1cout接收char类型的地址的反应 1.2字符串字面值 1.3字符串备份 2.使用new创建动态结构 3.使用new和delete搭配存储键盘输入的字符串 前言: 指针我们已经知道如何使用了,也知道指针和数组配合起来使用&am…

DHCP及中继(UOS)

DHCP服务器 中继器 客户端 服务器 安装DHCP apt install isc-dhcp-server -y 编辑配置文件 vim /etc/dhcp/dhcpd.conf 重启服务 systemctl restart isc-dhcp-server 配置监听网卡 vim /etc/default/isc-dhcp-server 中继器 安装dhcp yum install dhcp -y nmtui 修改…

【LeetCode每日一题: 1042. 不邻接植花 | 图论 | 染色问题】

🍎作者简介:硕风和炜,CSDN-Java领域新星创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎 🍎座右…

Qt中调用C#制作的com组件

作者:billy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 这里记录一下在 Qt 64位程序中调用 C# 制作的 com 组件的流程,方便后期自己回顾。 1. 了解 TLB 格式 拿到的依赖库最…

hbase进阶操作——读流程与写流程介绍

系列文章目录 centos7虚拟机下hbase的使用案例讲解 文章目录 系列文章目录 一、hbase架构原理 1.1、StoreFile 1.2、MemStore 1.3、WAL 二、hbase的写流程 2.1、写流程的流程图 2.2、写流程的流程图说明 三、hbase读流程 3.1、读流程的流程图 3.2、读流程的流程图解…

C/C++|物联网开发入门+项目实战|指针|嵌入式C语言高级|C语言内存空间的使用-学习笔记(9)

文章目录2-3 : C语言内存空间的使用指针概述示例:指针修饰符指针运算符示例示例1多级指针例子省略argc(个数)的常用写法:参考: 麦子学院-嵌入式C语言高级-内存空间2-3 : C语言内存空间的使用 指针概述 内存类型资源地…

CPU工作原理

CPU(中央处理器)是计算机中的重要组件,它负责执行计算机程序中的指令。在了解CPU的工作原理之前,我们需要先了解一些基本概念。 指令和指令集 指令是计算机程序中的基本单位,它指示计算机执行某个操作。指令集是一组…

我在“Now In Android”中学到的 9 件事

我在“Now In Android”中学到的 9 件事 Now in Android是一款功能齐全的 Android 应用程序,完全使用 Kotlin 和 Jetpack Compose 构建。它遵循 Android 设计和开发最佳实践,旨在为开发人员提供有用的参考。 https://github.com/android/nowinandroid UI…

淘宝悄悄内测“店号一体”的新模式

4月17日消息,淘宝近日已开始小规模测试“店号一体”新模式。新模式下,淘宝店铺将与逛逛、直播等账号完全打通;此前针对达人及内容型商家的新店铺模式“视频内容店”也同步升级。 内测商家透露,目前在淘宝发布的图文、短视频、直播…

腾讯学长分享的这份Java面试八股文手册,让我GitHub下载量破百万!!!

一些不满现状,被外界的“高薪”“好福利”吸引的人,一般就在这时候毅然决然地跳槽了。 跳槽是为了寻求更好的发展,但在跳槽前我们也不能确定下家就是更好的归宿,这就更加需要我们审慎地去对待,不能盲目跳槽。 其次&a…

知识图谱专栏简介:数据增强,智能标注,文本信息抽取(实体关系事件抽取)、知识融合算法方案、知识推理、模型优化、模型压缩技术等

知识图谱专栏简介:数据增强,智能标注,文本信息抽取(实体关系事件抽取)、知识融合算法方案、知识推理、模型优化、模型压缩技术等 专栏链接:NLP知识图谱相关技术业务落地方案和码源 NLP知识图谱相关技术业…

程序员跳槽薪水涨了一倍,谈谈java工程师找新工作的八大技巧

大家好,这几天发生了一些事情,我找到了一份新工作,明天是第一天上班。我想先谈一下我的新工作待遇,因为我觉得相对来说还算比较满意。接下来我想谈一下我的个人经历,从毕业到现在的工作经历。第三个话题是我最近半个月…

k-d Tree算法

1.概述 本文介绍一种用于高维空间中的快速最近邻和近似最近邻查找技术——Kd- Tree(Kd树)。Kd-Tree,即K-dimensional tree,是一种高维索引树形数据结构,常用于在大规模的高维数据空间进行最近邻查找(Nearest Neighbor)和近似最近邻查找(Appro…

Java工程行业管理系统源码-专业的工程管理软件-提供一站式服务

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1…

反向代理自建教程:你懂的

一、为什么需要自建反代 OpenAI提供了两种访问方式,一种是直接在ChatGPT网页端使用的Access Token方式,这种方式可以免费使用GPT-3.5模型,只需要登录即可使用。但缺点是不稳定,且无法扩展。另一种是使用API,注册用户可…

Nacos 客户端服务注册源码分析-篇三

Nacos 客户端服务注册源码分析-篇三 版本说明: 源码版本 nacos-1.4.2 Nacos 的核心功能点 服务注册: Nacos Client 会通过发送 REST 请求的方式向 Nacos Server 注册自己的服务,提供自身的元数据,比如 ip 地址以及端口等信息。Na…

Sentinal持久化到Nacos

Springboot应用整合Sentinel实现限流、熔断、降级笔记https://blog.csdn.net/chenjian723122704/article/details/130101875 Sentinel版本 1.8.6 Nacos版本 2.2.0 下载Sentinel源码 Sentinel1.8.6:https://github.com/alibaba/Sentinel/releases/tag/1.8.6 拷贝源…