Python的imutils库详细介绍

imutils 是一个专为简化OpenCV(计算机视觉库)常见操作而设计的Python工具库,提供了一系列便捷函数,使图像和视频处理更加高效和简洁。以下是对其功能、安装及用法的详细介绍:
1. 安装方法
通过pip安装:
pip install imutils
2. 主要功能及示例
2.1 图像处理
-
调整大小(保持宽高比)
imutils.resize可指定宽度或高度,自动计算另一维度以保持比例。import cv2 import imutilsimage = cv2.imread("image.jpg") resized = imutils.resize(image, width=300) # 高度自动调整 -
平移图像
imutils.translate平移图像,避免手动构建仿射矩阵。translated = imutils.translate(image, x=50, y=-30) # 向右50像素,向上30像素 -
旋转图像
imutils.rotate支持以图像中心或指定点旋转。rotated = imutils.rotate(image, angle=45) # 顺时针旋转45度 rotated_border = imutils.rotate_bound(image, 45) # 避免裁剪 -
裁剪
使用OpenCV切片操作,imutils提供辅助函数简化边界检查。cropped = imutils.crop(image, x=100, y=50, w=200, h=200)
2.2 轮廓处理
-
统一轮廓提取
grab_contours处理不同OpenCV版本的返回值差异。cnts = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) cnts = imutils.grab_contours(cnts) # 自动适配OpenCV 3/4+ -
轮廓排序
sort_contours按面积、位置等排序。(sorted_cnts, _) = imutils.sort_contours(cnts, method="left-to-right") # 从左到右排序
2.3 视频处理
-
多线程视频流
VideoStream支持摄像头、视频文件及树莓派摄像头,提升帧读取效率。vs = imutils.video.VideoStream(src=0).start() # 启用摄像头 while True:frame = vs.read()# 处理帧 vs.stop() -
帧率计算
FPS类用于性能评估。fps = imutils.video.FPS().start() while True:# 处理帧fps.update() fps.stop() print(f"FPS: {fps.fps():.2f}")
2.4 其他工具
-
OpenCV版本检查
if imutils.is_cv2():print("OpenCV 2.x") elif imutils.is_cv3():print("OpenCV 3.x") -
四点变换
order_points调整坐标点顺序,用于透视变换。pts = [(50, 60), (150, 20), (200, 180), (30, 200)] ordered = imutils.perspective.order_points(pts) # 顺序:左上、右上、右下、左下 -
URL图像下载
url_to_image从URL加载图像。image = imutils.url_to_image("http://example.com/image.jpg") -
显示优化
自动调整图像大小以适应屏幕显示。cv2.imshow("Window", imutils.resize(image, width=800))
3. 应用场景
- 快速原型开发:简化OpenCV代码,加速实验过程。
- 教育演示:清晰展示图像处理步骤,避免冗长代码。
- 计算机视觉项目:轮廓分析、对象跟踪、实时视频处理等。
4. 资源与维护
- GitHub仓库:https://github.com/jrosebr1/imutils
- 维护情况:持续更新,兼容Python 3.x及OpenCV 3/4+。
5. 使用建议
- 优点:代码简洁,适合快速开发。
- 注意:对性能要求极高时,建议直接使用OpenCV原生函数。
通过合理利用imutils,开发者可显著提升开发效率,专注于算法逻辑而非底层实现细节。
相关文章:
Python的imutils库详细介绍
imutils 是一个专为简化OpenCV(计算机视觉库)常见操作而设计的Python工具库,提供了一系列便捷函数,使图像和视频处理更加高效和简洁。以下是对其功能、安装及用法的详细介绍: 1. 安装方法 通过pip安装: p…...
常用查找算法整理(顺序查找、二分查找、插值查找、斐波那契查找、哈希查找、二叉排序树查找、平衡二叉树查找、红黑树查找、B树和B+树查找、分块查找)
常用的查找算法: 顺序查找:最简单的查找算法,适用于无序或数据量小的情况,逐个元素比较查找目标值。二分查找:要求数据有序,通过不断比较中间元素与目标值,将查找范围缩小一半,效率…...
2526考研资料分享 百度网盘
通过网盘分享的文件:01、2026【考研数学】 链接:https://pan.baidu.com/s/1PwMzp_yCYqjBqa7492mP3w?pwd98wg 提取码:98wg--来自百度网盘超级会员v3的分享 通过网盘分享的文件:01、2026【考研政治】 链接:https://pan.baidu.com/s/1PwMzp_yCYqjBqa7492…...
网络编程(24)——实现带参数的http-get请求
文章目录 二十四、day241. char 转为16进制2. 16进制转为 char3. URL 编码函数4. URL 解码函数5. 实现 get 请求参数的解析6. 测试 二十四、day24 我们在前文通过beast实现了http服务器的简单搭建,但是有很多问题我们并没有解决。 在前文中,我们的 get…...
东方财富股吧发帖与评论爬虫
东方财富股吧发帖与评论爬虫 东方财富股吧爬虫 写在开头项目介绍主要功能文件介绍爬取逻辑 a. 爬取帖子信息b. 爬取评论信息 使用步骤 1. 下载代码2. MongoDB 安装3. Webdriver 安装4. 运行 main.py5. 查看数据 踩过的坑附录(运行结果) 东方财富股吧爬…...
【Elasticsearch】match_bool_prefix查询
match_bool_prefix查询是 Elasticsearch 中一种用于全文搜索的查询方式,适用于需要同时匹配多个词汇,但词汇顺序不固定的情况,它结合了布尔查询(bool)和前缀查询(prefix)的功能,适用…...
微信小程序image组件mode属性详解
今天学习微信小程序开发的image组件,mode属性的属性值不少,一开始有点整不明白。后来从网上下载了一张图片,把每个属性都试验了一番,总算明白了。现总结归纳如下: 1.使用scaleToFill。这是mode的默认值,sc…...
数据结构:最小生成树
1.基本概念 生成树:连通无向图的生成树是包含图中所有顶点的极小连通子图(无环)。 最小生成树:所有生成树中边权重总和最小的那棵。 2.常用算法 克鲁斯卡尔算法(Kruskal) 步骤: 将所有边按权…...
C语言-章节 4:函数的定义与声明 ——「神秘法术的卷轴」
少年和 Inta 成功通过运算符与表达式的考验后,继续在函数城堡中探索。他们沿着一条闪烁着幽光的走廊前行,走廊两侧的墙壁上刻满了奇异的符号,仿佛在诉说着古老的编程秘密。终于,他们来到了一间神秘的房间,房间中央悬浮…...
《云原生安全攻防》-- K8s镜像安全:镜像全生命周期安全管理
从攻击者的角度来看,针对容器镜像的软件供应链攻击和镜像投毒等攻击方式,不仅攻击成本低,而且还能带来更高且持久的收益。因此,镜像安全问题变得日益突出。 在本节课程中,我们将深入探讨镜像全生命周期的安全管理&…...
uniapp商城之首页模块
文章目录 前言一、自定义导航栏1.静态结构2.修改页面配置3.组件安全区适配二、通用轮播组件1. 静态结构组件2.自动导入全局组件3.首页轮播图数据获取三、首页分类1.静态结构2.首页获取分类数据并渲染四、热门推荐1.静态结构2.首页获取推荐数据并渲染3.首页跳转详细推荐页五、猜…...
【Javascript Day13、14、15、16】
html的DOM操作 // JS 是为了让页面实现动态网页效果 // 动态和静态区分取决于JS的和页面标签的数据交互 // 动态网页:有数据交互 // 静态网页:无数据交互 // JS 和 元素的关联操作对象 DOM // 整个HT…...
linux 板子的wifi模块连上路由器后,用udhcpc给板子wifi分配ip,udhcpc获取到ip,但没有写入wlan0网卡上
linux 板子的wifi模块连上路由器后,用udhcpc给板子wifi分配ip,udhcpc获取到ip,但没有写入wlan0网卡上 这里的问题是 /usr/share/udhcpc/default.script脚本有问题 用下面正确脚本,即可写进去 #!/bin/sh# udhcpc script for busybox # Copyr…...
openGauss 3.0 数据库在线实训课程13: 学习逻辑结构:表管理1
前提 我正在参加21天养成好习惯| 第二届openGauss每日一练活动 课程详见:openGauss 3.0.0数据库在线实训课程 学习目标 学习openGauss表的创建、搜索路径和访问方法等 课程作业 1.创建一个表(默认,不指定模式),查…...
网络编程-
文章目录 网络编程套接字UDP/TCP的api使用 网络编程套接字 socket,是操作系统给应用程序(传输层给应用层)提供的api,Java也对这个api进行了封装。 socket提供了两组不同的api,UDP有一套,TCP有一套&#x…...
基于单片机的常规肺活量SVC简单计算
常规肺活量 SVC(Slow Vital Capacity)是指尽力吸气后缓慢而又完全呼出的最大气量。 成年男性的肺活量通常在 3500-4000ml 之间,成年女性的肺活量通常在 2500-3000ml 之间。 单片机一般通过外接流量传感器,使用ADC高速采集的方式…...
【PostgreSQL】PG在windows下的安装
一、准备 通过官网下载安装文件,官方下载路径如下: https://www.postgresql.org/download/windows/ 二、安装 双击postgresql-17.3-1-windows-x64.exe文件,启动安装,进入安装步骤,点击Next 选择PG安装路径ÿ…...
电动汽车电池监测平台系统设计(论文+源码+图纸)
1总体设计 本次基于单片机的电池监测平台系统设计,其整个系统架构如图2.1所示,其采用STC89C52单片机作为控制器,结合ACS712电流传感器、TLC1543模数转换器、LCD液晶、DS18B20温度传感器构成整个系统,在功能上可以实现电压、电流、…...
基于和声搜索(Harmony Search, HS)的多中心点选址优化算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于和声搜索(Harmony Search, HS)的多中心点选址优化算法matlab仿真。可以设置多个不同的中心点。 2.测试软件版本以及运行结果展示 matlab2022a/matlab2024b版…...
单链表的概念,结构和优缺点
1. 概念 链表是一种物理存储结构上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 2. 单链表的结构 单链表是由一系列节点组成的线性结构,每个结点包含两个域。:数据域和指针域。 数据域用来…...
面试官最爱问的图遍历:BFS在LeetCode「岛屿数量」和「打开转盘锁」中的实战拆解
面试官最爱问的图遍历:BFS在LeetCode「岛屿数量」和「打开转盘锁」中的实战拆解 最近在技术面试中,图的广度优先搜索(BFS)算法成为了高频考点。不同于教科书式的理论讲解,本文将聚焦LeetCode上两道经典题目——200.岛屿…...
别只改Nginx配置!从HTTP协议层拆解206状态码与CONTENT_LENGTH_MISMATCH的坑
从HTTP协议层拆解206状态码与CONTENT_LENGTH_MISMATCH的深层逻辑 视频播放失败时控制台弹出的net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)错误,往往让开发者陷入反复调整Nginx配置的循环。但真正的问题可能隐藏在HTTP协议层与数据传输机制的配合间隙中…...
保姆级教程:在Ubuntu 22.04上从零部署wvp-GB28181-pro国标视频平台(含ZLMediaKit)
从零构建GB28181视频监控平台:Ubuntu 22.04下的wvp-pro与ZLMediaKit深度整合指南 在智能安防与视频监控领域,GB28181协议已成为行业标准协议,而wvp-pro作为开源实现方案,配合ZLMediaKit流媒体服务器,能够快速搭建起功能…...
Node.js 服务端应用快速接入 Taotoken 实现智能客服回复功能
Node.js 服务端应用快速接入 Taotoken 实现智能客服回复功能 1. 准备工作 在开始编码前,需要完成两项基础配置:获取 Taotoken API Key 并安装必要的 Node.js 依赖。登录 Taotoken 控制台,在「API 密钥」页面创建新密钥,建议为生…...
基于ChatGPT的跨平台消息自动化分发引擎设计与实现
1. 项目概述:一个跨平台自动化消息分发引擎最近在折腾自动化流程,发现一个挺有意思的需求:如何把ChatGPT这类AI生成的内容,自动、高效地分发到多个不同的社交平台或通讯工具里。比如,你写了个脚本,每天定时…...
免费开源英雄联盟录像编辑神器:League Director终极指南
免费开源英雄联盟录像编辑神器:League Director终极指南 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedirector 你是否…...
AISMM零售应用实战手册:从数据接入、模型微调到实时决策闭环的7步标准化部署流程
更多请点击: https://intelliparadigm.com 第一章:AISMM零售智能决策范式的演进与奇点意义 AISMM(AI-Supported Multi-Modal Merchandising)代表了零售业从经验驱动向数据—认知—行动闭环跃迁的关键范式。其演进并非线性叠加&a…...
AssetStudio完整指南:三步解锁Unity游戏资源提取与转换
AssetStudio完整指南:三步解锁Unity游戏资源提取与转换 【免费下载链接】AssetStudio AssetStudio is a tool for exploring, extracting and exporting assets and assetbundles. 项目地址: https://gitcode.com/gh_mirrors/as/AssetStudio AssetStudio是一…...
如何让老旧电视盒子变身4K媒体中心:从零开始的CoreELEC系统构建指南
如何让老旧电视盒子变身4K媒体中心:从零开始的CoreELEC系统构建指南 【免费下载链接】e900v22c-CoreELEC Build CoreELEC for Skyworth e900v22c 项目地址: https://gitcode.com/gh_mirrors/e9/e900v22c-CoreELEC 你是否有一台闲置的电视盒子,想要…...
H3C防火墙双主模式RBM配置实战:如何用两台设备实现业务负载分担?
H3C防火墙双主模式RBM配置实战:如何用两台设备实现业务负载分担? 在当今企业网络架构中,防火墙作为关键安全节点,其高可用性设计直接关系到业务连续性。传统主备模式虽然能提供故障切换保障,但备设备长期处于闲置状态&…...
