python 图像缩放、平移、旋转、仿射、透视、金字塔源代码

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1.读取图片
print("欢迎来到图像放大、缩小、平移、旋转、仿射、透视小程序!")
pic_url = input("请输入你的图片所在文件路径(比如:./image/你的图片名.jpg):")  # 个人的小创新,支持用户输入图片路径
img1 = cv.imread(pic_url)
print("图片导入成功!请留意弹窗转换结果!")

# 2.图像缩放

# 21绝对尺寸
rows, cols = img1.shape[:2]
res = cv.resize(img1, (2 * cols, 2 * rows), interpolation=cv.INTER_CUBIC)

# 2.2相对尺寸
res1 = cv.resize(img1, None, fx=0.5, fy=0.5)

# 3图像显示
# 3.1 使用 opencv 显示图像(不推荐)

cv.imshow("orignal", img1)
cv.imshow("enlarge", res)
cv.imshow("shrink)", res1)
cv.waitKey(0)

# 3.2 使用matplotlib 显示图像
plt.rc("font", family='Microsoft YaHei')
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(10, 8), dpi=100)
axes[0].imshow(res[:, :, ::-1])
axes[0].set_title("绝对尺度 (放大)")
axes[1].imshow(img1[:, :, ::-1])
axes[1].set_title("原图")
axes[2].imshow(res1[:, :, ::-1])
axes[2].set_title("相对尺度 (缩小)")
plt.show()

# 1.读取图像
img1 = cv.imread(pic_url)
# 2.图像平移
rows, cols = img1.shape[:2]
M = M = np.float32([[1, 0, 100], [0, 1, 50]])  # 平移矩阵
dst = cv.warpAffine(img1, M, (cols, rows))
# 3.图像显示
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(img1[:, :, ::-1])
axes[0].set_title("原图")
axes[1].imshow(dst[:, :, ::-1])
axes[1].set_title("平移后结果")
plt.show()

# 1读取图像
img = cv.imread(pic_url)
# 2图像旋转
rows, cols = img.shape[:2]
# 2.1生成旋转矩阵
M = cv.getRotationMatrix2D((cols / 2, rows / 2), 90, 1)
# 2.2进行旋转变换
dst = cv.warpAffine(img, M, (cols, rows))
# 3图像展示
plt.rc("font", family='Microsoft YaHei')
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(img[:, :, ::-1])
axes[0].set_title("原图")
axes[1].imshow(dst[:, :, ::-1])
axes[1].set_title("旋转后结果")
plt.show()

# 1图像读取
img = cv.imread(pic_url)
# 2仿射变换
rows, cols = img.shape[:2]
# 2.1创建变换矩阵
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[100, 100], [200, 50], [100, 250]])
M = cv.getAffineTransform(pts1, pts2)
# 2.2完成仿射变换
dst = cv.warpAffine(img, M, (cols, rows))
# 3图像显示
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(img[:, :, ::-1])
axes[0].set_title("原图")
axes[1].imshow(dst[:, :, ::-1])
axes[1].set_title("仿射后结果")
plt.show()

# 1读取图像
img = cv.imread(pic_url)
# 2透射变换
rows, cols = img.shape[:2]
# 2.1创建变换矩阵
pts1 = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])
pts2 = np.float32([[100, 145], [300, 100], [80, 290], [310, 300]])
T = cv.getPerspectiveTransform(pts1, pts2)
# 2.2进行变换
dst = cv.warpPerspective(img, T, (cols, rows))
# 3图像显示
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(10, 8), dpi=100)
axes[0].imshow(img[:, :, ::-1])
axes[0].set_title("原图")
axes[1].imshow(dst[:, :, ::-1])
axes[1].set_title("透射后结果")
plt.show()

# 1图像读取
img = cv.imread(pic_url)
# 2进行图像采样
up_img = cv.pyrUp(img)  # 上采样操作
img_1 = cv.pyrDown(img)  # 下采样操作
# 3图像显示
cv.imshow('enlarge', up_img)
cv.imshow('original', img)
cv.imshow('shrink', img_1)
cv.waitKey(0)
cv.destroyAllWindows()
图片[1]-python  图像缩放、平移、旋转、仿射、透视、金字塔源代码-给我资源
图片[2]-python  图像缩放、平移、旋转、仿射、透视、金字塔源代码-给我资源
图片[3]-python  图像缩放、平移、旋转、仿射、透视、金字塔源代码-给我资源
图片[4]-python  图像缩放、平移、旋转、仿射、透视、金字塔源代码-给我资源
THE END
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

    暂无评论内容