OpenCV traducción de imágenes, zoom, rotar, afín flip transformación

Imagen transformación geométrica

En principio la imagen transformación geométrica incluye dos tipos: matriz 2x3 de transformación afín (traducción, escala, rotación, flip), basado en la matriz de 3x3 transformación de perspectiva.

traducción imagen

OpenCV para conseguir una traducción imagen

Lograr la traducción de la imagen, es necesario definir una matriz sigue, tx y ty son x y la dirección y distancia de traslación:
Para matriz de traducción imagen
la imagen usando la función cv.warpAffine traducción transformación afín () implementado

experimento

# 图像平移
import numpy as np
import cv2 as cv

img = cv.imread('paojie.jpg')

rows, cols = img.shape[:2]

# 定义平移矩阵,需要是numpy的float32类型
# x轴平移100,y轴平移50
M = np.float32([[1, 0, 100], [0, 1, 50]])
# 用仿射变换实现平移,第三个参数为dst的大小
dst = cv.warpAffine(img, M, (cols, rows))

cv.imshow('shift', dst)
cv.waitKey(0)
cv.destroyAllWindows()

Los resultados experimentales

resultados de la traducción imagen

escalado de imagen

OpenCV en el escalado de imagen

Zoom es cambiar el tamaño de la función de la imagen, el uso cv.resize () para lograr la adaptación de la imagen. Sí, también se puede enfocar de acuerdo con la escala de tamaño especificado.

experimento

# 图像缩放
import numpy as np
import cv2 as cv

img = cv.imread('paojie.jpg')

# 按照指定的宽度、高度缩放图片
res = cv.resize(img, (132, 150))
# 按照比例缩放,如x,y方向均放大一倍
# res2 = cv.resize(img, None, fx=2, fy=2, interpolation=cv.INTER_CUBIC)

cv.imshow('shrink', res)
# cv.imshow('zoom', res2)
cv.waitKey(0)
cv.destroyAllWindows()

Los resultados experimentales

filtrar resultados de imagen

modo de interpolación Varios

Referencia: diversos métodos de interpolación descritos

rotación de imagen

breve introducción

Lo mismo que la traducción de rotación, se utiliza el afín transformar, y por lo tanto necesidad de definir una matriz de transformación. Proporcionar función directa OpenCV cv.getRotationMatrix2D () para generar la matriz, la función tiene tres parámetros:
Parámetro 1: rotación de imagen centro
de parámetros 2: ángulo de rotación (n: en sentido antihorario, negativa: las agujas del reloj)
Parámetro 3: de escala, 0,5 se reduce a la mitad

experimento

# 图像旋转
import numpy as np
import cv2 as cv

img = cv.imread('paojie.jpg')
rows,cols = img.shape[:2]

# 逆时针45°旋转图片并缩小一半,第一个参数为旋转中心
M = cv.getRotationMatrix2D((cols / 2, rows / 2), 45, 0.5)
# img:源图像;M:旋转仿射矩阵;(cols,rows):dst的大小
dst = cv.warpAffine(img, M, (cols, rows))

cv.imshow('rotation', dst)
cv.waitKey(0)
cv.destroyAllWindows()

Los resultados experimentales

filtrar resultados rotación de imagen

giro de imagen

El giro de imagen OpenCV

dst = cv2.flip (img, 1)
en el que la función del segundo parámetro es mayor que 0, representa la imagen volteada horizontalmente (a lo largo del eje y); el segundo parámetro es igual a 0, representa un giro de imagen vertical (eje x), una primera dos parámetros es menor que 0, representa la imagen tanto horizontal invertida y verticalmente invertida.

experimento

# 图像翻转
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread('paojie.jpg')

# 水平翻转
hor = cv.flip(img,1)
# 垂直翻转
ver = cv.flip(img,0)
# 水平垂直翻转
hor_ver = cv.flip(img,-1)

plt.figure(1)
plt.subplot(2,2,1)
plt.imshow(img)
plt.title('Original')
plt.xticks([]),plt.yticks([])

plt.subplot(2,2,2)
plt.imshow(hor)
plt.title('horizontal')
plt.xticks([]),plt.yticks([])

plt.subplot(2,2,3)
plt.imshow(ver)
plt.title('vertical')
plt.xticks([]),plt.yticks([])

plt.subplot(2,2,4)
plt.imshow(hor_ver)
plt.title('horizontal_and_vertical')
plt.xticks([]),plt.yticks([])

plt.show()

Los resultados experimentales

Da la vuelta al resultado de una variedad de imagen
Después de leer el artículo completo, no apunte un elogio relajarse.

Supongo que te gusta

Origin www.cnblogs.com/wojianxin/p/12590295.html
Recomendado
Clasificación