OpenCV之imutils实战

简介: 【1月更文挑战第3天】

1.imutils功能简介

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

安装⽅法:

pip install imutils

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

2.imutils的使⽤⽅法

2.1 图像平移

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

translated = imutils.translate(img,x,y)
参数:
img:要移动的图像
x:沿x轴⽅向移动的像素个数
y: 沿y轴⽅向移动的像素个数

image.png

2.2 图像缩放

图⽚的缩放在OPenCV中要注意确保保持宽⾼⽐。⽽在imutils中⾃动保持原有图⽚
的宽⾼⽐,只指定宽度weight和Height即可。

img = cv.imread("lion.jpeg")
resized = imutils.resize(img,width=200)
print("原图像⼤⼩: ", img.shape)
print("缩放后⼤⼩:",resized.shape)
plt.figure(figsize=[10, 10])
plt.subplot(1,2,1)
plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))
plt.title('原图')
plt.axis("off")
plt.subplot(1,2,2)
plt.imshow(cv.cvtColor(resized, cv.COLOR_BGR2RGB))
plt.title('缩放结果')
plt.axis("off")
plt.show()

下图是对图像进⾏缩放后的结果:
image.png

2.3 图像旋转

在OpenCV中进⾏旋转时使⽤的是仿射变换,在这⾥图像旋转⽅法
是 imutils.rotate() ,跟2个参数,第⼀个是图⽚数据,第⼆个是旋转的⻆度,旋
转是朝逆时针⽅向。同时 imutils 还提供了另⼀个相似的⽅法, rotate_round() ,
它就是按顺时针旋转的。

import cv2
import imutils
image = cv2.imread('lion.jpeg')
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.png

2.4 ⻣架提取

⻣架提取,是指对图⽚中的物体进⾏拓扑⻣架(topological skeleton)构建的过程。
imutils提供的⽅法是skeletonize(),第⼆个参数是结构参数的尺⼨(structuring
element),相当于是⼀个粒度,越⼩需要处理的时间越⻓。
效果如下:

import cv2
import imutils
### 1 图像读取
image = cv2.imread('lion.jpeg')
# 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()

image.png

相关文章
|
3月前
|
存储 算法 数据可视化
使用计算机视觉实战项目精通 OpenCV:6~8
使用计算机视觉实战项目精通 OpenCV:6~8
48 0
|
3月前
|
计算机视觉
使用计算机视觉实战项目精通 OpenCV:1~5
使用计算机视觉实战项目精通 OpenCV:1~5
71 0
|
16天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
39 6
|
3月前
|
机器学习/深度学习 算法 算法框架/工具
深度学习实战:基于TensorFlow与OpenCV的手语识别系统
深度学习实战:基于TensorFlow与OpenCV的手语识别系统
164 0
|
4月前
|
计算机视觉 Python
OpenCV轮廓拟合与凸包的讲解与实战应用(附Python源码)
OpenCV轮廓拟合与凸包的讲解与实战应用(附Python源码)
57 0
|
4月前
|
算法 计算机视觉 开发者
OpenCV中使用Eigenfaces人脸识别器识别人脸实战(附Python源码)
OpenCV中使用Eigenfaces人脸识别器识别人脸实战(附Python源码)
76 0
|
4月前
|
算法 计算机视觉 Python
OpenCV中Canny边缘检测和霍夫变换的讲解与实战应用(附Python源码)
OpenCV中Canny边缘检测和霍夫变换的讲解与实战应用(附Python源码)
76 0
|
4月前
|
计算机视觉 Python
OpenCV获取视频文件的属性并动态显示实战(附Python源码)
OpenCV获取视频文件的属性并动态显示实战(附Python源码)
48 0
|
4月前
|
计算机视觉 开发者 Python
OpenCV中Fisherfaces人脸识别器识别人脸实战(附Python源码)
OpenCV中Fisherfaces人脸识别器识别人脸实战(附Python源码)
67 0
|
4月前
|
XML 算法 计算机视觉
使用OpenCV进行人脸检测和戴墨镜特效实战(附Python源码)
使用OpenCV进行人脸检测和戴墨镜特效实战(附Python源码)
107 1