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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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!")