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

import numpy as np
import c<a href="https://www.knrjk.com/tag/1479" target="_blank">v</a>2 as cv
import matplotlib.pyplot as plt
# 1.读取图片
print("欢迎来到图像<a href="https://www.knrjk.com/tag/4449" target="_blank">放大</a>、缩小、平移、旋转、仿射、透视小程序!")
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()
import numpy as np
import c<a href="https://www.knrjk.com/tag/1479" target="_blank">v</a>2 as cv
import matplotlib.pyplot as plt

# 1.读取图片
print("欢迎来到图像<a href="https://www.knrjk.com/tag/4449" target="_blank">放大</a>、缩小、平移、旋转、仿射、透视小程序!")
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()
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()
python  图像缩放、平移、旋转、仿射、透视、金字塔源代码插图
python  图像缩放、平移、旋转、仿射、透视、金字塔源代码插图1
python  图像缩放、平移、旋转、仿射、透视、金字塔源代码插图2
python  图像缩放、平移、旋转、仿射、透视、金字塔源代码插图3
THE END