OpenCV의 화상 변환, 줌, 회전, 플립 아핀 변환

이미지 기하학적 변환

아핀 변환의 2x3 매트릭스 (변환, 스케일링, 회전, 플립)는 투시 변환의 3 × 3 행렬에 기초하여 원칙적으로 이미지 기하학적 변환은 두 가지 유형을 포함한다.

이미지 변환

OpenCV의 영상 번역을 달성하기 위해

이미지 변환을 달성 우리 행렬은 다음을 정의 할 필요가 TX 및 TY는 X 및 Y 번역 방향 거리이다 :
이미지 변환 행렬
구현되는 아핀 변환의 변환 기능을 이용 cv.warpAffine 화상 ()

실험

# 图像平移
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()

실험 결과

이미지 번역 결과

이미지 크기 조정

이미지 스케일링에서 OpenCV

줌은 이미지 스케일링을 달성하기 위해 이미지를 사용 cv.resize () 함수의 크기를 조정합니다. 예, 당신은 또한 지정된 크기의 확장에 따라 확대 할 수 있습니다.

실험

# 图像缩放
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()

실험 결과

이미지 좁은 결과

다양한 보간 모드

참조 : 각종의 보간 방법

이미지 회전

간략한 소개

회전 변환과 동일한는 아핀 변환을 사용하고, 따라서 변환 행렬을 정의 할 필요가있다. : 매트릭스를 생성하기 위해 직접 OpenCV의 cv.getRotationMatrix2D () 함수를 제공하는 기능을 갖는 세 개의 매개
변수 1 : 회전 중심 픽처
파라미터 2 회전 각도 (n은 반 시계 방향으로, 네거티브 : 시계 방향)
, 스케일링 파라메타 3 0.5 반감된다

실험

# 图像旋转
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()

실험 결과

이미지 회전 좁은 결과

이미지 플립

화상 플립을 OpenCV

DST = cv2.flip은 (IMG는, 1)
상기 제 파라미터의 함수가 0보다 큰 것을 특징으로하는, (는 Y 축을 따라) 가로 대칭 이미지를 나타내고, 두 번째 파라미터는 0과 동일하고, 그 상하 반전 화상 (X 축)을 나타내고, 제 두 변수가 0보다 작은 화상을 나타내는 수평 반전 상하 반전.

실험

# 图像翻转
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()

실험 결과

이미지의 다양한 결과를 플립
전체 기사를 읽은 후, 칭찬 긴장을 가리 키지 않습니다.

추천

출처www.cnblogs.com/wojianxin/p/12590295.html