이미지 기하학적 변환
아핀 변환의 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()
실험 결과
전체 기사를 읽은 후, 칭찬 긴장을 가리 키지 않습니다.