返回顶部
首页 > 资讯 > 后端开发 > Python >python中imutils包怎么用
  • 784
分享到

python中imutils包怎么用

2023-06-20 13:06:48 784人浏览 泡泡鱼

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

摘要

这篇文章主要介绍python中imutils包怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.imutils功能简介imutils是在OpenCV基础上的一个封装,达到更为简结的调用OPenCV接口的目的,它

这篇文章主要介绍python中imutils包怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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 npimport cv2 as cvimport imutilsimport matplotlib.pyplot as pltplt.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()

python中imutils包怎么用

2 图像缩放

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

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

import numpy as npimport cv2 as cvimport imutilsimport matplotlib.pyplot as pltplt.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)  # 指定宽度,会自动计算相应比例高度,还有参数heightprint('原图大小:',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()

python中imutils包怎么用

3 图像旋转

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

函数:

逆时针旋转

rotated = imutils.rotate(image, 90)

顺时针旋转

rotated_round = imutils.rotate_bound(image, 90)

import numpy as npimport cv2 as cvimport imutilsimport matplotlib.pyplot as pltplt.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()

python中imutils包怎么用

4 骨架提取(边缘提取)

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

imutils提供的方法是skeletonize(),

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

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

import cv2 as cvimport imutilsimport matplotlib.pyplot as pltplt.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('骨架提取结果')  # 显示灰度图要声明 grayplt.show()

python中imutils包怎么用

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频道!

--结束END--

本文标题: python中imutils包怎么用

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

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

猜你喜欢
  • python中imutils包怎么用
    这篇文章主要介绍python中imutils包怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.imutils功能简介imutils是在OPenCV基础上的一个封装,达到更为简结的调用OPenCV接口的目的,它...
    99+
    2023-06-20
  • python imutils包基本概念及使用
    1.imutils功能简介 imutils是在OPenCV基础上的一个封装,达到更为简结的调用OPenCV接口的目的,它可以轻松的实现图像的平移,旋转,缩放,骨架化等一系列的操作。 安装方法: pip instal...
    99+
    2022-06-02
    python imutils包 python imutils包使用
  • Python中的datetime包与time包怎么用
    这篇文章主要介绍“Python中的datetime包与time包怎么用”,在日常操作中,相信很多人在Python中的datetime包与time包怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pytho...
    99+
    2023-06-29
  • Python中的闭包怎么用
    这篇文章主要介绍Python中的闭包怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、闭包概念闭包在函数中提出的概念,简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的...
    99+
    2023-06-25
  • Python包中__init__.py文件怎么使用
    这篇文章主要讲解了“Python包中__init__.py文件怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python包中__init__.py文件怎么使用”吧!一、__init_...
    99+
    2023-07-02
  • python属性包怎么用
    这篇文章主要介绍python属性包怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!属性包你可以使用attrs代替数据类,选择attrs有两个原因:使用的Python版本高于3.7想要更多功能Theattrs软件包...
    99+
    2023-06-27
  • Python的闭包怎么使用
    本篇内容介绍了“Python的闭包怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.闭包的定义和使用当返回的内部函数使用了外部函数的...
    99+
    2023-06-30
  • python的itertools包怎么使用
    这篇文章主要介绍了python的itertools包怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python的itertools包怎么使用文章都会有所收获,下面我们一起来看看吧。前言:Python的内...
    99+
    2023-06-29
  • 怎么在python中解包参数
    本篇文章为大家展示了怎么在python中解包参数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillow...
    99+
    2023-06-14
  • 怎么在python中使用闭包和装饰器
    本篇文章为大家展示了怎么在python中使用闭包和装饰器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、闭包闭包的形成条件:函数嵌套。内部函数使用了外部函数的变量或者参数。外部函数返回了使用外 部...
    99+
    2023-06-15
  • Python中闭包与lambda的作用域怎么写
    这篇文章主要介绍“Python中闭包与lambda的作用域怎么写”,在日常操作中,相信很多人在Python中闭包与lambda的作用域怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中闭包与l...
    99+
    2023-07-02
  • python中怎么使用pip命令安装numpy包
    在Python中使用pip命令安装numpy包,可以按照以下步骤进行: 打开终端或命令提示符窗口。 输入以下命令来安装num...
    99+
    2023-10-23
    python numpy
  • python包中的sched事件调度器怎么用
    本篇内容主要讲解“python包中的sched事件调度器怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python包中的sched事件调度器怎么用”吧!一、延迟运行事件在一个延迟或规定时间...
    99+
    2023-06-30
  • JavaScript中闭包怎么用
    这篇文章将为大家详细讲解有关JavaScript中闭包怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。闭包真的是学过一遍又一遍,Js博大精深,每次学习都感觉有新的收获...
    99+
    2024-04-02
  • golang中toolkits包怎么用
    这篇文章主要介绍了golang中toolkits包怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在查看 open-falcon 项目源码时,经常会看到其引用了一个类库 ...
    99+
    2023-06-27
  • Python怎么导入包中的模块
    在Python中,可以使用`import`语句来导入包中的模块。导入包中的模块有以下几种方式:1. 导入整个模块:```import...
    99+
    2023-08-08
    Python
  • 怎么在python中使用datime包计算时间差
    这篇文章将为大家详细讲解有关怎么在python中使用datime包计算时间差,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python有哪些常用库python常用的库:1.requesuts...
    99+
    2023-06-14
  • python中time包的作用是什么
    这期内容当中小编将会给大家带来有关python中time包的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、...
    99+
    2023-06-14
  • python中utils包的作用是什么
    utils包通常用于存放一些辅助函数或工具类,用于简化代码编写和提高代码的可重用性。这些工具函数和类通常不属于特定的业务逻辑,而是为...
    99+
    2024-04-03
    Python utils
  • 怎么使用setuptools打包Python代码
    本篇内容介绍了“怎么使用setuptools打包Python代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!setuptools是Pyth...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作