OpenCVの画像変換、ズーム、回転、フリップアフィン変換

画像幾何変換

アフィン変換(平行移動、拡大縮小、回転、フリップ)の2×3行列、透視変換3x3の行列に基づく:原理的に画像の幾何学的変換は、2つのタイプを含みます。

画像変換

画像変換を達成するために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()関数を提供する、関数は3つのパラメータを有する
パラメータ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軸方向)、左右反転表し、2番目のパラメータが0に等しく、それは垂直反転画像(x軸)を表す;第2つのパラメータは、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