画像の拡大縮小および回転は、OpenCVでどのように実装されますか?
OpenCVではcv2.resize()関数で画像の拡大・縮小ができます。この関数は2つの引数を受け取ります。1つ目の引数は拡大・縮小する画像、2つ目の引数は目的の画像サイズです。2つ目の引数で拡大・縮小後の画像サイズを指定できます。
例えば、画像を元の半分の大きさに縮小する場合:
import cv2
# 读取图片
img = cv2.imread('image.jpg')
# 缩放图片
resized_img = cv2.resize(img, (img.shape[1] // 2, img.shape[0] // 2))
# 显示原始图片和缩放后的图片
cv2.imshow('Original Image', img)
cv2.imshow('Resized Image', resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
加えて、cv2.getRotationMatrix2D() 関数で回転行列を作成し、cv2.warpAffine() 関数で画像を回転させる方法も利用できます。
例えば、画像を反時計回りに90度回転させる場合:
import cv2
import numpy as np
# 读取图片
img = cv2.imread('image.jpg')
# 获取旋转矩阵
M = cv2.getRotationMatrix2D((img.shape[1] // 2, img.shape[0] // 2), 90, 1)
# 旋转图片
rotated_img = cv2.warpAffine(img, M, (img.shape[1], img.shape[0]))
# 显示原始图片和旋转后的图片
cv2.imshow('Original Image', img)
cv2.imshow('Rotated Image', rotated_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
提供されたコードでは、getRotationMatrix2D()関数は、回転中心座標、回転角、および拡大率の3つのパラメータを受け取ります。一方、warpAffine()関数は、回転させる画像、回転行列、および出力画像のサイズの3つのパラメータを受け取ります。