Uso da biblioteca de ferramentas imutils

1. Introdução à função imutils

imutils é um pacote baseado em OPenCV para atingir o objetivo de chamar a interface OPenCV de forma mais concisa, podendo facilmente implementar uma série de operações como translação, rotação, dimensionamento e esqueletização de imagens.

método de instalação:

pip install imutils

Antes da instalação, certifique-se de que numpy, scipy, matplotlib e opencv foram instalados.

2. Como usar imutils

2.1 Tradução de imagem

O OpenCV também fornece a implementação de tradução de imagens.A matriz de tradução deve ser calculada primeiro e, em seguida, a transformação afim é usada para realizar a tradução.A tradução da imagem pode ser realizada diretamente no imutils.

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

parâmetro:

  • img: a imagem a ser movida
  • x: o número de pixels movidos ao longo do eixo x
  • y: o número de pixels que se movem ao longo do eixo 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 Zoom da imagem

No OPenCV, o zoom da imagem deve prestar atenção para garantir que a proporção da imagem seja mantida. No imutils, a proporção da imagem original é mantida automaticamente e apenas o peso da largura e a altura podem ser especificados.

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 Rotação da imagem

A transformação afim é usada ao girar no OpenCV. Aqui, o método de rotação da imagem é imutils.rotate()seguido por 2 parâmetros. O primeiro são os dados da imagem, o segundo é o ângulo de rotação e a rotação é no sentido anti-horário. Ao mesmo tempo, imutilsoutro método semelhante é fornecido  rotate_round(), que gira no sentido horário.

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 Extração de esqueleto

A extração do esqueleto se refere ao processo de construção topológica do esqueleto dos objetos na imagem. O método fornecido por imutils é skeletize (). O segundo parâmetro é o tamanho do parâmetro de estrutura (elemento estruturante), que equivale a uma granularidade. Quanto menor o tamanho, maior o tempo de processamento.

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()

 

Acho que você gosta

Origin blog.csdn.net/qq_39197555/article/details/114839030
Recomendado
Clasificación