You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.9 KiB

2 years ago
import cv2
import sys
import os
import numpy as np
#仿射变化
def Affinevariation():
cap = cv2.VideoCapture(0)
ok, src = cap.read()
cap.release()
if ok:
# 图像放缩
src = cv2.resize(src, (256, 256))
# 获取图像shape
rows, cols = src.shape[: 2]
########Begin########
#设置图像仿射变化矩阵
post1 = np.float32([[50, 50], [200, 50], [50, 200]])
post2 = np.float32([[10, 100], [200, 50], [100, 250]])
M = cv2.getAffineTransform(post1, post2)
# 图像仿射变换
result = cv2.warpAffine(src, M, (rows, cols))
img = np.hstack([src, result])
cv2.imshow("resourse and result", img)
# 等待关闭
cv2.waitKey(0)
#图形扩展缩放、平移、旋转
def Graphics_extend_scale_pan_rotate():
cap = cv2.VideoCapture(0)
ok, src = cap.read()
cap.release()
if ok:
# 图像放缩
img = src
l, w, h = img.shape
# 放大图像至原来的两倍,使用双线性插值法
cv2.resize(img, (0, 0), 2, 2, cv2.INTER_LINEAR)
height, width, channel = img.shape
# 构建移动矩阵,x轴左移 10 个像素y轴下移 30 个
M = np.float32([[1, 0, 10], [0, 1, 30]])
img = cv2.warpAffine(img, M, (width, height))
# 构建矩阵旋转中心坐标为处理后图片长宽的一半旋转角度为45度缩放因子为1
M = cv2.getRotationMatrix2D((width / 2, height / 2), 45, 1)
dst = cv2.warpAffine(img, M, (width, height))
img = np.hstack([src, dst])
cv2.imshow("resourse and result", img)
# 等待关闭
cv2.waitKey(0)
def main():
print("1.仿射变化 2.图形扩展缩放、平移、旋转")
myinput = input()
if myinput == '1':
Affinevariation()
elif myinput == '2':
Graphics_extend_scale_pan_rotate()
else:
print("wrong input!")