imutils工具库使用

1.imutils功能简介

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

安装方法:

pip install imutils

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

2.imutils的使用方法

2.1 图像平移

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

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

参数:

  • img:要移动的图像
  • x:沿x轴方向移动的像素个数
  • y: 沿y轴方向移动的像素个数
import cv2
import numpy as np
import matplotlib.pyplot as plt
import imutils

from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei'] # 简体
 
mpl.rcParams['axes.unicode_minus']= False


img = cv2.imread('01.jpg')
img_translate = imutils.translate(img, 20, 30)

plt.figure(figsize=(20,8), dpi=100)
plt.subplot(1,2,1)
plt.imshow(img[:,:,::-1])
plt.title("原图")
plt.subplot(1,2,2)
plt.imshow(img_translate[:,:,::-1])
plt.title("平移后")

2.2 图像缩放

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

img = cv2.imread('01.jpg')
img_resized = imutils.resize(img, height=200)

plt.figure(figsize=(20,8), dpi=100)
plt.subplot(1,2,1)
plt.imshow(img[:,:,::-1])
plt.title("原图")
plt.subplot(1,2,2)
plt.imshow(img_resized[:,:,::-1])
plt.title("缩放后")

2.3 图像旋转

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

img = cv2.imread('01.jpg')
img_rotate1 = imutils.rotate(img, 90)
img_rotate2 = imutils.rotate(img, 180)
img_rotate3 = imutils.rotate_bound(img, 90)


plt.figure(figsize=(20,8), dpi=100)
plt.subplot(2,2,1)
plt.imshow(img[:,:,::-1])
plt.title("原图")
plt.subplot(2,2,2)
plt.imshow(img_rotate1[:,:,::-1])
plt.title("逆时针旋转90度")
plt.subplot(2,2,3)
plt.imshow(img_rotate2[:,:,::-1])
plt.title("逆时针旋转180度")
plt.subplot(2,2,4)
plt.imshow(img_rotate3[:,:,::-1])
plt.title("顺时针旋转180度")

 

2.4 骨架提取

骨架提取,是指对图片中的物体进行拓扑骨架(topological skeleton)构建的过程。imutils提供的方法是skeletonize(),第二个参数是结构参数的尺寸(structuring element),相当于是一个粒度,越小需要处理的时间越长。

import cv2
import imutils
# 1 图像读取
image= cv2.imread('./01.jpg')
# 2 灰度化
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)                                  
# 3 骨架提取
skeleton = imutils.skeletonize(gray, size=(3, 3))  
# 4 图像展示
plt.figure(figsize=(10,8),dpi=100)
plt.subplot(121),plt.imshow(img[:,:,::-1]),plt.title('原图')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(skeleton,cmap="gray"),plt.title('骨架提取结果')
plt.xticks([]), plt.yticks([])
plt.show()

 

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值