1. 実験の目的:
1.
MATLAB
またはOpenCV
の操作と基本機能に精通している;
2. 画像の変換、垂直ミラー変換、水平ミラー変換、拡大縮小および回転の原理と応用を理解し、習得している。2. 実験原理:
1. 初期座標の点が
(x,y)
平行移動され(x0,y0)
、座標は となり(x',y')
、2 点間の関係は
行列形式で表されます。
2. 画像の鏡像変換は、画像を垂直中心と交換する変換です。 3.画像の縮小と拡大の変換行列は同じです。
その
ときS_x≤1,S_y≤1
、画像は縮小されます。 ;S_x≥1,S_y≥1
時に画像が拡大されます。4. 画像の回転とは、画像内の特定の点を原点として、反時計回りまたは時計回りに一定の角度だけ回転させることです。その変換行列は次のとおりです:
変換行列は座標軸の原点を中心に実行されます。(a,b)
指定された点の周りを回転する場合、座標系はこの点まで変換され、回転され、その後新しい座標に変換される必要があります。元。3. 実験内容のステップ (実験の主なステップを記録し、デバッグが成功したら、スクリーンショットを撮るか、結果の写真を撮って保存します)以下の実験を使用する
MATLAB
か、完了する必要があります。OpenCV
1. 画像に対して平行移動変換を実行します。
# 导包
import cv2
import numpy as np
lena = cv2.imread("./lena.jpg") # 读取原图
height, width = lena.shape[:2] # 获取图像的高度和宽度
x = 100
y = 200
M = np.float32([[1, 0, x], [0, 1, y]])
Panned_lena = cv2.warpAffine(lena, M, (width, height))
cv2.imshow("原始图像", lena)
cv2.imshow("平移图像", Panned_lena)
cv2.waitKey()
cv2.destroyAllWindows()
2. 画像に対して垂直ミラー変換を実行します。
import cv2
lena = cv2.imread("./lena.jpg")
vertical_mirror_lena = cv2.flip(lena, 1)
cv2.imshow("原始图像", lena)
cv2.imshow("垂直镜像图像", vertical_mirror_lena)
cv2.waitKey()
cv2.destroyAllWindows()
3. 画像に対して水平ミラー変換を実行します。
import cv2
lena = cv2.imread("./lena.jpg")
horizontal_mirror_lena = cv2.flip(lena, 0)
cv2.imshow("原始图像", lena)
cv2.imshow("水平镜像翻转图像", horizontal_mirror_lena)
cv2.waitKey()
cv2.destroyAllWindows()
4. 画像の拡大縮小と回転を行います。
import cv2
lena = cv2.imread('./lena.jpg') # 读入原始图像
print(lena.shape) # 打印出图片尺寸
x, y = lena.shape[0:2] # 将图片高和宽分别赋值给x,y
cv2.imshow('原始图像', lena) # 显示原图
# 缩放到原来的二分之一
lena_zoom_1 = cv2.resize(lena, (int(y / 2), int(x / 2)))
cv2.imshow('缩放至原来二分之一的图像', lena_zoom_1)
cv2.waitKey()
# 缩放到原来的四分之一
lena_zoom_2 = cv2.resize(lena, (0, 0), fx=0.25, fy=0.25,
interpolation=cv2.INTER_NEAREST)
cv2.imshow('缩放到原来的四分之一的图像', lena_zoom_2)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
lena = cv2.imread("./lena.jpg") # 读取原图
height, width = lena.shape[:2] # 获取图像的高度和宽度
# 以图像中心为圆点,逆时针旋转 45°,并将目标图像缩小为原始图像的 0.7 倍
M = cv2.getRotationMatrix2D((width/2, height/2), 45, 0.7)
rotate_lena = cv2.warpAffine(lena, M, (width, height))
cv2.imshow("原始图像", lena)
cv2.imshow("旋转图像", rotate_lena)
cv2.waitKey()
cv2.destroyAllWindows()