OpenCV之imutils实战

本文涉及的产品
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
简介: 【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月前
|
算法 计算机视觉
基于qt的opencv实时图像处理框架FastCvLearn实战
本文介绍了一个基于Qt的OpenCV实时图像处理框架FastCvLearn,通过手撕代码的方式详细讲解了如何实现实时人脸马赛克等功能,并提供了结果展示和基础知识回顾。
148 7
|
7月前
|
机器学习/深度学习 算法 算法框架/工具
深度学习实战:基于TensorFlow与OpenCV的手语识别系统
深度学习实战:基于TensorFlow与OpenCV的手语识别系统
450 0
|
7月前
|
存储 算法 数据可视化
使用计算机视觉实战项目精通 OpenCV:6~8
使用计算机视觉实战项目精通 OpenCV:6~8
90 0
|
7月前
|
计算机视觉
使用计算机视觉实战项目精通 OpenCV:1~5
使用计算机视觉实战项目精通 OpenCV:1~5
261 0
|
7月前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
251 7
|
3月前
|
文字识别 计算机视觉 开发者
基于QT的OCR和opencv融合框架FastOCRLearn实战
本文介绍了在Qt环境下结合OpenCV库构建OCR识别系统的实战方法,通过FastOCRLearn项目,读者可以学习Tesseract OCR的编译配置和在Windows平台下的实践步骤,文章提供了技术资源链接,帮助开发者理解并实现OCR技术。
179 9
基于QT的OCR和opencv融合框架FastOCRLearn实战
|
2月前
|
机器学习/深度学习 算法 计算机视觉
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
【Python篇】Python + OpenCV 全面实战:解锁图像处理与视觉智能的核心技能
109 2
|
3月前
|
计算机视觉
基于QT的opencv插件框架qtCvFrameLearn实战
这篇文章详细介绍了如何基于Qt框架开发一个名为qtCvFrameLearn的OpenCV插件,包括项目配置、插件加载、Qt与OpenCV图像转换,以及通过各个插件学习OpenCV函数的使用,如仿射变换、卡通效果、腐蚀、旋转和锐化等。
62 10
|
7月前
|
计算机视觉 开发者 Python
OpenCV中Fisherfaces人脸识别器识别人脸实战(附Python源码)
OpenCV中Fisherfaces人脸识别器识别人脸实战(附Python源码)
280 0
|
7月前
|
计算机视觉 Python
【Python实战】——Python+Opencv是实现车牌自动识别
【Python实战】——Python+Opencv是实现车牌自动识别

热门文章

最新文章