当前位置: 首页 > news >正文

OpenCV 简介与安装方法

大家好啊,我是董董灿。

如果你在做计算机视觉相关的工作,肯定少不了使用 OpenCV 库。

在《计算机视觉专栏》的传统计算机视觉部分,我曾经使用 OpenCV 进行了很多图像的处理,比如边缘检测。

刚好最近在整理一份文稿,写了关于 OpenCV 的内容,所以就摘抄一部分放在这里,内容主要是关于 Opencv 的介绍以及安装方法。

有需要的朋友可以收藏一下。

什么是 OpenCV?

OpenCV 是一个被广泛使用的开源计算机视觉库,它提供了大量的传统图像 处理算法和基于深度学习的计算机视觉算法,以及用于图像和视频处理的方法。

OpenCV 的主要核心算法使用 C++ 编写,并且对外封装了 C++ 和 Python 语 言的 API,方便调用。

OpenCV 具有以下几个特点 :

代码开源

OpenCV 的代码是开源的,在遵守开源协议的条件下,我们可以在官方网址免费下载源代码学习并使用。

平台无关

OpenCV 的库可以在多种系统平台上运行,包括 Windows、Linux、MacOS、Android 和 iOS 等,这样可以确保用户在不同平台上使用和部 署,迁移成本非常低。

库很小

OpenCV 的库非常小,编译完成后总共不到 100MB,非常适合在一些小内存的场景下进行部署,比如一些图像检测终端。

性能好

由于 OpenCV 的核心算法是使用 C++ 编写的,并且可以很好地支持多线程和 SIMD 的运行模式,因此,其中涉及的算法运行效率很高,性能很好。

上述几点便是 OpenCV 库的几个重要特点,也正因为这几个特点,使得 OpenCV 无论在学术界还是工业界都得到了广泛的应用。

OpenCV 可以用来做什么?

OpenCV 提供了大量的接口,用于图像和视频的 读取、写入、显示和处理,下面再简单介绍 OpenCV 的主要应用场景:

图像、视频处理

OpenCV 可以很方便地读取、写入和处理图像以及视频,它提供了一些图像处理函数,如滤波、阈值处理、形态学处理和边缘检测等。

目标检测和跟踪

OpenCV 包含了一些目标检测和目标跟踪的成套函数, 这些函数可以用于检测和跟踪图像中的目标,例如图像中的人脸、视频中的行人和运动的汽车等。

机器学习

OpenCV 还可以进行一些机器学习的任务,它可以构建支持向量机(SVM)、随机森林(RandomForest)等算法,从而完成一些分类、回归任务。

OpenCV 环境搭建

安装和配置

OpenCV 库在 C++ 开发环境和 python 开发环境下的安装有所不同。

以下是安装两种开发环境中 OpenCV 的详细步骤。

安装 python 版本的 OpenCV

安装 Python

如果环境中还没有安装 Python,可以从 Python 官网下载并安装,建议安装 Python 3.0 以上版本。

如果你是 Linux 用户,一般会默认安装了 Python。

安装完 Python 后,系统会默认安装 pip 工具,python 开发环境下需要使用 pip 命令安装 OpenCV。

安装 OpenCV

Windows 系统的用户,按“win+R” 组 合 键 打 开 命 令 提 示 符(cmd) 或 PowerShell。

Linux 系统的用户直接在终端界面进行操作。

输入以下命令:

pip3 install opencv-python

验证安装 

在命令行中输入 Python 来启动 Python 解释器,尝试导入 cv2 库并打印其版本来确认安装是否成功:

import cv2
print(cv2.__version__)

如果没有错误消息,并且能正确显示版本号,说明 OpenCV 已经成功安装。

在上述步骤中,我们使用了 OpenCV 的预编译包 opencv-python,这是最简单且最快速的安装方法。

对于更高级的用户或需要 OpenCV 的完整功能(包括视 频处理和 GPU 加速等)的用户,可能需要从源代码编译 OpenCV。

这需要下载 OpenCV 的源代码、配置编译选项以及编译和安装,过程更为复杂且需要考虑硬件兼容性。

安装 C++ 版本的 OpenCV

C++ 版本的 OpenCV 依赖一些开发库和工具,在 Linux 系统下通过以下命令安装这些依赖:

sudo apt updatesudo apt-get install libopencv-dev python3-opencv libopencv-contribdev 

执行上述命令后,即可完成 C++ 版本的 OpenCV,安装完成后,就可以在 C++ 代码中以导入头文件的方式来使用了,如下:

#include <opencv2/opencv.hpp>
cv::Mat source;
source = cv::imread(file_name);

相关文章:

OpenCV 简介与安装方法

大家好啊&#xff0c;我是董董灿。 如果你在做计算机视觉相关的工作&#xff0c;肯定少不了使用 OpenCV 库。 在《计算机视觉专栏》的传统计算机视觉部分&#xff0c;我曾经使用 OpenCV 进行了很多图像的处理&#xff0c;比如边缘检测。 刚好最近在整理一份文稿&#xff0c;…...

pycharm基本库安装的几种方法

1、pycharm基本库安装的几种方法 1&#xff09;一次性设置下载源 cmd窗口&#xff08;管理员方式&#xff09;.输入以下命令&#xff1a; pip config set global.index-url http://pypi.tuna.tsinghua.edu.cn/simple pip config set global.trusted-host pypi.tuna.tsinghu…...

安装更新upgrade导致ubuntu崩溃

安装更新导致ubuntu崩溃 前言uuid编不过&#xff0c;导致的崩溃 记录一些ubuntu崩溃的过程。 目前只有一个&#xff0c;以后遇到都放在这里&#xff0c;以提醒自己。 前言 如果从10000年看现在的linux&#xff0c;不是说不完美&#xff0c;而是糟透了。 linux的版本号&#xf…...

数学建模选MATLAB还是Python?

选择MATLAB还是Python进行数学建模&#xff0c;取决于多个因素&#xff0c;包括你的具体需求、个人偏好、项目要求以及你已有的技能。以下是一些考虑因素&#xff1a; 1. 易用性&#xff1a; • MATLAB&#xff1a;对于数学和工程问题&#xff0c;MATLAB提供了一个非常直观和…...

python数组增加元素

append、appext、insert&#xff0c;在某位置插入insert最在行。 (笔记模板由python脚本于2024年12月04日 19:41:46创建&#xff0c;本篇笔记适合python基础编程的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖…...

【笔记】离散数学 1-3 章

1. 数理逻辑 1.1 命题逻辑的基本概念 1.1.1 命题的概念 命题&#xff08;Proposition&#xff09;&#xff1a;是一个陈述句&#xff0c;它要么是真的&#xff08;true&#xff09;&#xff0c;要么是假的&#xff08;false&#xff09;&#xff0c;但不能同时为真和假。例如…...

AI技术在电商行业中的应用与发展

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

【Linux篇】权限管理 - 用户与组权限详解

一. 什么是权限&#xff1f; 首先权限是限制人的。人 真实的人 身份角色 权限 角色 事物属性 二. 认识人–用户 Linux下的用户分为超级用户和普通用户 root :超级管理员&#xff0c;几乎不受权限的约束普通用户 :受权限的约束超级用户的命令提示符是#&#xff0c;普通用…...

【AI系统】昇腾推理引擎 MindIE

昇腾推理引擎 MindIE 本文将介绍华为昇腾推理引擎 MindIE 的详细内容&#xff0c;包括其基本介绍、关键功能特性以及不同组件的详细描述。 本文内容将深入探讨 MindIE 的三个主要组件&#xff1a;MindIE-Service、MindIE-Torch 和 MindIE-RT&#xff0c;以及它们在服务化部署…...

美畅物联丨智能监控,高效运维:视频汇聚平台在储能领域的实践探索

在当今全球能源格局不断变化的大背景下&#xff0c;对清洁能源的需求正以惊人的速度增长。储能项目作为平衡能源供需、提升能源利用效率的关键环节&#xff0c;其规模和复杂度也在不断攀升。在储能项目的运营管理过程中&#xff0c;安全监控、设备运维以及数据管理等方面面临着…...

[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED]

使用requess库访问https网址时&#xff0c;返回 (Caused by SSLError(SSLError(1, [SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled (_ssl.c:1147)))) 原因可能是服务器的认证方式版本太低然后requests抛弃了这种认证方式 参考&#xff…...

12.2深度学习_视觉处理CNN_池化层、卷积知识

3.池化层 3.1 概述 池化层 (Pooling) 降低维度, 缩减模型大小&#xff0c;提高计算速度. 即: 主要对卷积层学习到的特征图进行下采样&#xff08;SubSampling&#xff09;处理。 池化层主要有两种: 最大池化 max pooling 最大池化是从每个局部区域中选择最大值作为池化后的值…...

Kafka 常见面试题深度解析

一、基础概念 1. 请简要介绍 Kafka 的基本架构。 Kafka 主要由生产者&#xff08;Producer&#xff09;、消费者&#xff08;Consumer&#xff09;、代理&#xff08;Broker&#xff09;、主题&#xff08;Topic&#xff09;和分区&#xff08;Partition&#xff09;等组成。…...

LVS默认的工作模式支持哪些负载均衡算法?

LVS默认的工作模式支持哪些负载均衡算法? LVS&#xff08;Linux Virtual Server&#xff09;默认支持多种负载均衡算法&#xff0c;这些算法在不同的场景下具有各自的优势。以下是 LVS 默认支持的负载均衡算法及其特点&#xff1a; 1. 轮询调度&#xff08;Round Robin Sched…...

洛谷P2670扫雷游戏(Java)

三.P2670 [NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 n 行 m列的雷区中有一些格子含有地雷&#xff08;称之为地雷格&#xff09;&#xff0c;其他格子不含地雷&#xff08;称之为非地雷格&#xff09;。玩…...

【算法】【优选算法】位运算(下)

目录 一、&#xff1a;⾯试题 01.01.判定字符是否唯⼀1.1 位图1.2 hash思路1.3 暴力枚举 二、268.丢失的数字2.1 位运算&#xff0c;异或2.2 数学求和 三、371.两整数之和四、137.只出现⼀次的数字 II五、⾯试题 17.19.消失的两个数字 一、&#xff1a;⾯试题 01.01.判定字符是…...

前端性能优化篇:防抖和节流

参考&#xff1a;JS问题&#xff1a;项目中如何区分使用防抖或节流&#xff1f; 面试官&#xff1a;什么是防抖和节流&#xff1f;有什么区别&#xff1f;如何实现&#xff1f; 1 为什么要用到防抖和节流 当函数绑定一些持续触发的事件如&#xff1a;浏览器的resize、scroll…...

同为科技(TOWE)柔性定制化PDU插座

随着科技的进步&#xff0c;越来越多的精密电子设备&#xff0c;成为工作生活密不可分的工具。 电子电气设备的用电环境也变得更为复杂&#xff0c;所以安全稳定的供电是电子电气设备的生命线。 插座插排作为电子电气设备最后十米范围内供配电最终核心部分&#xff0c;便捷、安…...

【云原生系列】云计算中的负载均衡是什么,有什么用

云计算里有一个非常重要的概念叫“负载均衡”&#xff0c;如果你经常听到这个词但还不太明白具体是怎么回事&#xff0c;这篇文章可以给你一些思路。负载均衡简单来说就是“分担压力”&#xff0c;确保访问量被合理地分配到各个服务器上&#xff0c;让系统高效且稳定地运行。 …...

工业—使用Flink处理Kafka中的数据_ChangeRecord2

使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据&#xff0c;每隔 1 分钟输出最近 3 分钟的预警次数最多的 设备&#xff0c;将结果存入Redis 中&#xff0c; key 值为 “warning_last3min_everymin_out” &#xff0c; value 值为 “ 窗口结束时间&#xff0c;设备id” &am…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...