iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python imutils包基本概念及使用
  • 726
分享到

python imutils包基本概念及使用

pythonimutils包pythonimutils包使用 2022-06-02 22:06:23 726人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

1.imutils功能简介 imutils是在OpenCV基础上的一个封装,达到更为简结的调用OPenCV接口的目的,它可以轻松的实现图像的平移,旋转,缩放,骨架化等一系列的操作。 安装方法: pip instal

1.imutils功能简介

imutils是在OpenCV基础上的一个封装,达到更为简结的调用OPenCV接口的目的,它可以轻松的实现图像的平移,旋转,缩放,骨架化等一系列的操作。

安装方法:

pip install imutils

在安装前应确认已安装numpy,scipy,matplotlib和opencv。

如果出现缺失包错误

可以使用下面安装命令,会把所有包安装

pip install NumPy SciPy opencv-python matplotlib imutils

2.imutils的使用方法

 2.1 图像平移

相对于原来的cv,使用imutiles可以直接指定平移的像素,不用构造平移矩阵

OpenCV中也提供了图像平移的实现,要先计算平移矩阵,然后利用仿射变换实现平移,在imutils中可直接进行图像的平移。

translated = imutils.translate(img,x,y)

参数:

  • img:要移动的图像
  • x:沿x轴方向移动的像素个数
  • y: 沿y轴方向移动的像素个数

运行代码说明:

要更改图片地址,地址中不能包含中文

cv读取图片是BGR格式,img[:,:,::-1]转换是为了转回RGB格式,这样才可以正常显示彩色图像


import numpy as np
import cv2 as cv
import imutils
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号


img = cv.imread('image1.jpg')  # 更改图片地址
translated = imutils.translate(img,100,50)  # 平移函数

plt.figure()
plt.subplot(121)
plt.imshow(img[:,:,::-1])  # img[:,:,::-1]转换是为了转回RGB格式,这样才可以正常显示彩色图像
plt.title('原图')
plt.subplot(122)
plt.imshow(translated[:,:,::-1])
plt.title('平移结果')
plt.show()

image-20210703155234783

2 图像缩放

图片的缩放在OPenCV中要注意确保保持宽高比。而在imutils中自动保持原有图片的宽高比,只指定宽度weight和height即可。

缩放函数:imutils.resize(img,width=100)


import numpy as np
import cv2 as cv
import imutils
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号


img = cv.imread('image1.jpg')
# 说明一般如果有width参数,就会安装width参数进行缩放,不会理会height参数,如果两个参数不成比例,也是安装width进行缩放
resized = imutils.resize(img,width=100)  # 指定宽度,会自动计算相应比例高度,还有参数height


print('原图大小:',img.shape)
print('缩放后大小', resized.shape)
plt.figure()
plt.subplot(121)
plt.imshow(img[:,:,::-1])
plt.title('原图')
plt.subplot(122)
plt.imshow(resized[:,:,::-1])
plt.title('缩放图')
plt.show()

image-20210703160646632

3 图像旋转

在OpenCV中进行旋转时使用的是仿射变换,在这里图像旋转方法是imutils.rotate(),跟2个参数,第一个是图片数据,第二个是旋转的角度,旋转是朝逆时针方向。同时imutils还提供了另一个相似的方法, rotate_round(),它就是按顺时针旋转的。

函数:

逆时针旋转

rotated = imutils.rotate(image, 90)

顺时针旋转

rotated_round = imutils.rotate_bound(image, 90)


import numpy as np
import cv2 as cv
import imutils
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号


image = cv.imread('image1.jpg')
# 逆时针旋转
rotated = imutils.rotate(image, 90)                     
# 顺时针旋转
rotated_round = imutils.rotate_bound(image, 90)         # 画图              
plt.figure(figsize=[10, 10])
plt.subplot(1,3,1)
plt.imshow(img[:,:,::-1])
plt.title('原图')
plt.axis("off")
plt.subplot(1,3,2)
plt.imshow(rotated[:,:,::-1])
plt.title('逆时针旋转90度')
plt.axis("off")
plt.subplot(1,3,3)
plt.imshow(rotated_round[:,:,::-1])
plt.title('顺时针旋转90度')
plt.axis("off")
plt.show()

image-20210703161411578

4 骨架提取(边缘提取)

骨架提取(边缘提取),是指对图片中的物体进行拓扑骨架(topological skeleton)构建的过程。

imutils提供的方法是skeletonize(),

第二个参数是结构参数的尺寸(structuring element),相当于是一个粒度,越小需要处理的时间越长。可以设置为 (3,3),在下面实验中我使用了(7,7的)

注意,不是所有图片都能求出骨架,例如我上面使用的哆啦A梦就不可以


import cv2 as cv
import imutils
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号


# 1 图像读取
image2 = cv.imread('earth.png')
# 2 灰度化
gray = cv.cvtColor(image2, cv.COLOR_BGR2GRAY)
# 3 骨架提取
skeleton = imutils.skeletonize(gray, size=(7, 7))

# 4 图像展示
plt.figure()
plt.subplot(121),plt.imshow(image2[:,:,::-1]),plt.title('原图')

plt.subplot(122),plt.imshow(skeleton,cmap="gray"),plt.title('骨架提取结果')  # 显示灰度图要声明 gray

plt.show()

image-20210703164058284

5 转RGB,使用Matplotlib显示

在OpenCV的Python绑定中,图像以BGR顺序表示为NumPy数组。使用该cv2.imshow功能时效果很好。但是,如果打算使用Matplotlib,该plt.imshow函数将假定图像按RGB顺序排列。调用cv2.cvtColor解决此问题,也可以使用opencv2matplotlib便捷功能。


img = cv.imread("lion.jpeg")
plt.figure()
plt.imshow(imutils.opencv2matplotlib(img))

6 OPenCV版本的检测

OpenCV 4发布之后,随着主要版本的更新,向后兼容性问题尤为突出。在使用OPenCV时,应检查当前正在使用哪个版本的OpenCV,然后使用适当的函数或方法。在imutils中的is_cv2()、is_cv3()和is_cv4()是可用于自动确定当前环境的OpenCV的版本简单的功能。


print("OPenCV版本: {}".fORMat(cv2.__version__))

到此这篇关于python imutils包简介使用的文章就介绍到这了,更多相关python imutils包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python imutils包基本概念及使用

本文链接: https://www.lsjlt.com/news/11079.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python基本概念
    一 基本概念1 字面意义上的常量,如2、‘This is ok'这样的字符串>>> print('a,2,3')a,2,32 字符串单引号(‘)使用单引号指示字符串,类似shell中的强引用,所有的空格、制表符照原样保留。...
    99+
    2023-01-31
    基本概念 Python
  • RocketMQ 介绍及基本概念
    1 介绍 RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。 1.1 RocketMQ 特点 支持发布/订阅(Pub/Sub)和点对点(P2P)消息模型 在一个...
    99+
    2023-08-19
    rabbitmq kafka java
  • Git基本概念及操作(3)
    如果使用传统的如CC开发的话,刚开始进行GIT开发可能不是太适应。这个主要是有些概念不一样。比喻在CC中,我们一般是围绕一个主分支进行开发,对一个文件来说,在主分支上会生成不同的版本。同样,我们在每一个版本下面创立新的次分支,在次分支上也会...
    99+
    2023-01-31
    基本概念 操作 Git
  • Python语法的基本概念
    这篇文章主要讲解了“Python语法的基本概念”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python语法的基本概念”吧!基本概念 数:整数、长整数、浮点数【例:3.23或52.3E-4】...
    99+
    2023-06-17
  • ROSTF坐标变换基本概念及使用案例
    目录前言一、ROS中的TF1.监听TF变换2.广播TF变换二、TF常用组件1.tf_monitor2.tf_echo <source_frame> <target_...
    99+
    2023-01-03
    ros tf坐标变换 ros tf ros tf坐标
  • Python进程池基本概念
    目录一、python进程池二、进程池如何使用?申请()apply_async地图()map_async()close()终端()加入()三、代码实列四、进程池中的进程和一般的进程有什...
    99+
    2024-04-02
  • axios概念介绍和基本使用
    目录简介使用axios配置对象常用的配置项:默认配置axios拦截器取消请求总结 简介 本文主要讲解axios的概念和基本使用。 axios时目前最流行的ajax封装库之一...
    99+
    2024-04-02
  • K8s-helm简介及基本概念详解
    目录Helm简介一、什么是 Helm(官网:https://helm.sh/)二、Helm中的基本概念Chart三、从Helm2到Helm3的变化四、Helm版本支持策略Helm简介...
    99+
    2024-04-02
  • JavaScript中Promise的基本概念及使用方法是什么
    本篇内容主要讲解“JavaScript中Promise的基本概念及使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中Promis...
    99+
    2024-04-02
  • Flutter入门学习Dart语言变量及基本使用概念
    目录正文变量变量的声明赋值变量的划分默认值变量的类型推断修饰符Late变量类型判断is和类型转换as一些重要概念空安全和可空类型表达式和语句注释DartPad正文 Dart是Goog...
    99+
    2024-04-02
  • Python类、模块、包的概念及区别
    类类的概念在许多语言中出现,是面向对象编程的基础,很容易理解。抽象出不同物体的共同特征,根据相似性原则,把彼此相似的物体归于相同的类概念, 它将数据和操作进行封装,以便将来的复用。 模块模块,在Python中一个文件就可以认为是一个模块。在...
    99+
    2023-01-31
    模块 区别 概念
  • AJAX概念以及使用
    AJAX (Asynchronous JavaScript and XML) 是一种用于在网页上实现异步数据交互的技术。它允许网页在...
    99+
    2023-09-23
    AJAX
  • Python中requests库的基本概念与具体使用方法
    目录一、 基本概念1、 简介2、 获取3、 http 协议3.1 URL3.2 常用 http 请求方法二、 使用方法1、 基本语法2、 具体使用方法2.1 get2.2 post2...
    99+
    2024-04-02
  • python中Fearturetools的基本概念是什么
    python中Fearturetools的基本概念是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python的五大特点是什么python的五大特点:1.简单易学,开发程序...
    99+
    2023-06-14
  • Python进程池基本概念是什么
    这篇文章主要介绍“Python进程池基本概念是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python进程池基本概念是什么”文章能帮助大家解决问题。前言:创建进程池可以形象地理解为创建一个并行...
    99+
    2023-06-29
  • Go语言中SQL的基本概念及用法解析
    Go语言中SQL的基本概念及用法解析 SQL(Structured Query Language)是一种专门用来管理和操作关系数据库的语言。在Go语言中,我们通常使用SQL来执行数据库...
    99+
    2024-04-02
  • Go语言函数的基本概念及用法介绍
    Go语言是一种快速、简洁、安全并且高效的编程语言,近年来在软件开发领域有着日益增长的影响力。在Go语言中,函数是非常重要的概念,它是程序中最基本的组成单元。本文将介绍Go语言函数的基本...
    99+
    2024-03-09
    函数 用法 概念 go语言
  • Oracle RAC之:ASM概念及基本操作维护
    Oracle RAC系列之:ASM基本操作维护 ASM(自动存储管理)是一个专门为Oracle数据库服务的数据文件存储机制,通过ASM管理数据文件,DBA不用再担心I/O性能问题,也不需要知道文件的名称...
    99+
    2024-04-02
  • 浅谈音视频ptsdts基本概念及理解
    目录I、P、B 帧DTS、PTS 的概念音视频的同步PTS和DTS的时间基视频的播放过程可以简单理解为一帧一帧的画面按照时间顺序呈现出来的过程,就像在一个本子的每一页画上画,然后快速...
    99+
    2022-11-13
    音视频 pts dts
  • vuex的核心概念和基本使用详解
    目录介绍开始安装 ①直接下载方式 ②CND方式③NPM方式④Yarn方式NPM方式安装的使用方式 store概念及使用概念:定义使用mutations概念及使用概念:使用:定义使用a...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作