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

【计算机视觉】imutils的基本使用

一、简介

imutils 是一个 OpenCV 的 Python 封装库,简化了图像的处理,可以更方便的实现图像显示(使用 Matplotlib)、平移(Translate)、旋转(Rotate)、缩放(Resize)、骨架化(Skeletonizate)等操作。

二、安装

pip install imutils

三、基本使用

3.1 图像显示

imutils.opencv2matplotlib(img)

说明

将 OpenCV 默认的 BGR 图像格式转换为 RGB 格式,以便在 matplotlib 中显示

返回值

转换后的图像

参数

  • img: 要转换的图像

示例

import cv2
import matplotlib.pyplot as plt
import imutils

img = cv2.imread("test.jpg")

plt.figure("img")
plt.imshow(imutils.opencv2matplotlib(img))
plt.show()

请添加图片描述

3.2 平移(Translate)

imutils.translate(img, x, y)

返回值

平移后的图像

参数

  • img: 要移动的图像
  • x: 沿x轴移动的距离
  • y: 沿y轴移动的距离

示例

import cv2
import matplotlib.pyplot as plt
import imutils

img = cv2.imread("test.jpg")
translated = imutils.translate(img, 400, 400)

plt.figure("img")
plt.imshow(imutils.opencv2matplotlib(translated))
plt.show()


请添加图片描述

3.3 旋转(Rotate)

imutils.rotate(img, angle)
imutils.rotate_bound(img, angle)

说明

  • rotate: 逆时针旋转
  • rotate_bound: 顺时针旋转

返回值

旋转后的图像

参数

  • img: 要旋转的图像
  • angle: 要旋转的角度(角度制)

示例

import cv2
import matplotlib.pyplot as plt
import imutils

img = cv2.imread("test.jpg")
rotated = imutils.rotate(img, 90)

plt.figure("img")
plt.imshow(imutils.opencv2matplotlib(rotated))
plt.show()


请添加图片描述

3.4 缩放(Resize)

imutils.resize(img, width=width, [,height=height])

说明

在 imutils 中缩放会自动保持图片的宽高比,只需指定 weight 和 height 其中一个参数,就会根据图片原比例自动计算出另一个

返回值

缩放后的图像

参数

  • img: 要缩放的图像
  • width: 缩放后的图像宽度
  • heigth: 缩放后的图像高度

示例

import cv2
import matplotlib.pyplot as plt
import imutils

img = cv2.imread("test.jpg")
resized = imutils.resize(img, width=300)

plt.figure("img")
plt.imshow(imutils.opencv2matplotlib(resized))
plt.show()


请添加图片描述

3.5 骨架化(Skeletonizate)

imutils.skeletonize(img, size=(3, 3))

返回值

处理后的图像

参数

  • img: 要骨架化的图像,必须是灰度图
  • size: 卷积核的大小

示例

import cv2
import matplotlib.pyplot as plt
import imutils

img = cv2.imread("test.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
skeletonized = imutils.skeletonize(gray, size=(3, 3))

plt.figure("img")
plt.imshow(imutils.opencv2matplotlib(skeletonized))
plt.show()


请添加图片描述

四、参考资料

  • python-imutils包简介使用_集电极的博客:https://blog.csdn.net/qq_38463737/article/details/118466096

  • PyImageSearch/imutils, Github: https://github.com/PyImageSearch/imutils

相关文章:

  • Vue--nextTick--作用/用法/原理
  • 自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
  • 计算机网络习题答案
  • js中的‘==‘和‘===‘
  • 一起来部署项目-采购一台云服务器
  • 【老生谈算法】matlab实现抽样定理算法源码——抽样定理
  • [从0开始机器学习]4.线性回归 正规方程
  • RayVentory以改进IT的分析,RayVentory原始数据之间轻松切换
  • Oracle 递归案例
  • Python编程 print输出函数
  • WordPress JSON REST API OAuth 1.0 认证获取Authorization Basic 码+Python api 创建文章(一)
  • 力扣 每日一题 1235. 规划兼职工作【难度:困难,rating: 2022】(动态规划+二分查找)
  • 数据挖掘-模型的评估(四)
  • 开源远程桌面软件_RustDesk_(可自建远程桌面服务器)
  • 【Django框架】——11 Django模型——02创建模型类
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • “大数据应用场景”之隔壁老王(连载四)
  • CentOS 7 修改主机名
  • javascript 哈希表
  • learning koa2.x
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Unix命令
  • 二维平面内的碰撞检测【一】
  • 聚类分析——Kmeans
  • 入手阿里云新服务器的部署NODE
  • 使用common-codec进行md5加密
  • 正则表达式
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (Java数据结构)ArrayList
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (剑指Offer)面试题34:丑数
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (算法)Game
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转) Face-Resources
  • (转)Windows2003安全设置/维护
  • ***利用Ms05002溢出找“肉鸡
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .Net MVC + EF搭建学生管理系统
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET Standard 的管理策略
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NetCore项目nginx发布
  • :not(:first-child)和:not(:last-child)的用法
  • [14]内置对象
  • [20180224]expdp query 写法问题.txt
  • [Android]创建TabBar
  • [C#]winform部署yolov5-onnx模型