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 简介与安装方法
大家好啊,我是董董灿。 如果你在做计算机视觉相关的工作,肯定少不了使用 OpenCV 库。 在《计算机视觉专栏》的传统计算机视觉部分,我曾经使用 OpenCV 进行了很多图像的处理,比如边缘检测。 刚好最近在整理一份文稿,…...
pycharm基本库安装的几种方法
1、pycharm基本库安装的几种方法 1)一次性设置下载源 cmd窗口(管理员方式).输入以下命令: 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编不过,导致的崩溃 记录一些ubuntu崩溃的过程。 目前只有一个,以后遇到都放在这里,以提醒自己。 前言 如果从10000年看现在的linux,不是说不完美,而是糟透了。 linux的版本号…...
数学建模选MATLAB还是Python?
选择MATLAB还是Python进行数学建模,取决于多个因素,包括你的具体需求、个人偏好、项目要求以及你已有的技能。以下是一些考虑因素: 1. 易用性: • MATLAB:对于数学和工程问题,MATLAB提供了一个非常直观和…...
python数组增加元素
append、appext、insert,在某位置插入insert最在行。 (笔记模板由python脚本于2024年12月04日 19:41:46创建,本篇笔记适合python基础编程的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖…...
【笔记】离散数学 1-3 章
1. 数理逻辑 1.1 命题逻辑的基本概念 1.1.1 命题的概念 命题(Proposition):是一个陈述句,它要么是真的(true),要么是假的(false),但不能同时为真和假。例如…...
AI技术在电商行业中的应用与发展
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
【Linux篇】权限管理 - 用户与组权限详解
一. 什么是权限? 首先权限是限制人的。人 真实的人 身份角色 权限 角色 事物属性 二. 认识人–用户 Linux下的用户分为超级用户和普通用户 root :超级管理员,几乎不受权限的约束普通用户 :受权限的约束超级用户的命令提示符是#,普通用…...
【AI系统】昇腾推理引擎 MindIE
昇腾推理引擎 MindIE 本文将介绍华为昇腾推理引擎 MindIE 的详细内容,包括其基本介绍、关键功能特性以及不同组件的详细描述。 本文内容将深入探讨 MindIE 的三个主要组件:MindIE-Service、MindIE-Torch 和 MindIE-RT,以及它们在服务化部署…...
美畅物联丨智能监控,高效运维:视频汇聚平台在储能领域的实践探索
在当今全球能源格局不断变化的大背景下,对清洁能源的需求正以惊人的速度增长。储能项目作为平衡能源供需、提升能源利用效率的关键环节,其规模和复杂度也在不断攀升。在储能项目的运营管理过程中,安全监控、设备运维以及数据管理等方面面临着…...
[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED]
使用requess库访问https网址时,返回 (Caused by SSLError(SSLError(1, [SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled (_ssl.c:1147)))) 原因可能是服务器的认证方式版本太低然后requests抛弃了这种认证方式 参考ÿ…...
12.2深度学习_视觉处理CNN_池化层、卷积知识
3.池化层 3.1 概述 池化层 (Pooling) 降低维度, 缩减模型大小,提高计算速度. 即: 主要对卷积层学习到的特征图进行下采样(SubSampling)处理。 池化层主要有两种: 最大池化 max pooling 最大池化是从每个局部区域中选择最大值作为池化后的值…...
Kafka 常见面试题深度解析
一、基础概念 1. 请简要介绍 Kafka 的基本架构。 Kafka 主要由生产者(Producer)、消费者(Consumer)、代理(Broker)、主题(Topic)和分区(Partition)等组成。…...
LVS默认的工作模式支持哪些负载均衡算法?
LVS默认的工作模式支持哪些负载均衡算法? LVS(Linux Virtual Server)默认支持多种负载均衡算法,这些算法在不同的场景下具有各自的优势。以下是 LVS 默认支持的负载均衡算法及其特点: 1. 轮询调度(Round Robin Sched…...
洛谷P2670扫雷游戏(Java)
三.P2670 [NOIP2015 普及组] 扫雷游戏 题目背景 NOIP2015 普及组 T2 题目描述 扫雷游戏是一款十分经典的单机小游戏。在 n 行 m列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩…...
【算法】【优选算法】位运算(下)
目录 一、:⾯试题 01.01.判定字符是否唯⼀1.1 位图1.2 hash思路1.3 暴力枚举 二、268.丢失的数字2.1 位运算,异或2.2 数学求和 三、371.两整数之和四、137.只出现⼀次的数字 II五、⾯试题 17.19.消失的两个数字 一、:⾯试题 01.01.判定字符是…...
前端性能优化篇:防抖和节流
参考:JS问题:项目中如何区分使用防抖或节流? 面试官:什么是防抖和节流?有什么区别?如何实现? 1 为什么要用到防抖和节流 当函数绑定一些持续触发的事件如:浏览器的resize、scroll…...
同为科技(TOWE)柔性定制化PDU插座
随着科技的进步,越来越多的精密电子设备,成为工作生活密不可分的工具。 电子电气设备的用电环境也变得更为复杂,所以安全稳定的供电是电子电气设备的生命线。 插座插排作为电子电气设备最后十米范围内供配电最终核心部分,便捷、安…...
【云原生系列】云计算中的负载均衡是什么,有什么用
云计算里有一个非常重要的概念叫“负载均衡”,如果你经常听到这个词但还不太明白具体是怎么回事,这篇文章可以给你一些思路。负载均衡简单来说就是“分担压力”,确保访问量被合理地分配到各个服务器上,让系统高效且稳定地运行。 …...
工业—使用Flink处理Kafka中的数据_ChangeRecord2
使用 Flink 消费 Kafka 中 ChangeRecord 主题的数据,每隔 1 分钟输出最近 3 分钟的预警次数最多的 设备,将结果存入Redis 中, key 值为 “warning_last3min_everymin_out” , value 值为 “ 窗口结束时间,设备id” &am…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...
