OpenCV 图像的几何变换

一、图像缩放

1.API

复制代码
cv2.resize(src, dsize, fx=0,fy=0,interpolation = cv2.INTER_LINEAR)

参数:

①src:输入图像

②dsize:绝对尺寸

③fx,fy:相对尺寸

④interpolation:插值方法

2.代码演示

python 复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
[rows, cols] = img.shape[:2]
res_1 = cv.resize(img, (2*cols, 2*rows), interpolation=cv.INTER_CUBIC)
cv.imshow('image', res_1)
cv.waitKey()
res_2 = cv.resize(img, None, fx=0.5, fy=0.5)
cv.imshow('image', res_1)
cv.waitKey()

二、图像平移

1.API

python 复制代码
cv2.warpAffine(img, M, dsize)

参数:

①img:输入图像

②M:2×3移动矩阵,为np.float32类型

③dsize:输出图像的大小

2.代码演示

python 复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
[rows, cols] = img.shape[:2]
M = np.float32([[1, 0, 100], [0, 1, 50]])
dst = cv.warpAffine(img, M, (cols, rows))
cv.imshow('image', dst)
cv.waitKey()

三、图像旋转

1.API

python 复制代码
cv2.getRotationMatrix2D(center, angle, scale)
cv.warpAffine()

参数:

①center:旋转中心

②angle:旋转角度

③scale:缩放比例

返回值:

M:旋转矩阵

2.代码演示

python 复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
[rows, cols] = img.shape[:2]
M = cv.getRotationMatrix2D((cols/2, rows/2), 120, 1)
dst = cv.warpAffine(img, M, (cols, rows))
cv.imshow('image', dst)
cv.waitKey()

四、仿射变换

1.API

python 复制代码
cv2.getAffineTransform()
cv2.warpAffine()

2.代码演示

python 复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
[rows, cols] = img.shape[:2]
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[100, 100], [200, 50], [100, 250]])
M = cv.getAffineTransform(pts1, pts2)
dst = cv.warpAffine(img, M, (cols, rows))
cv.imshow('image', dst)
cv.waitKey()

五、透射变换

1.API

python 复制代码
cv2.getPerspectiveTransform()
cv2.warpPerspective()

2.代码演示

python 复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
img = cv.resize(img, None, fx=0.5, fy=0.5)
[rows, cols] = img.shape[:2]
pts1 = np.float32([[56, 65], [368, 52], [28, 138], [389, 390]])
pts2 = np.float32([[100, 145], [300, 100], [80, 290], [310, 300]])
T = cv.getPerspectiveTransform(pts1, pts2)
dst = cv.warpPerspective(img, T, (cols, rows))
cv.imshow('image', dst)
cv.waitKey()

六、图像金字塔

1.API

python 复制代码
cv2.pyrUp(img) #对图像进行上采样
cv2.pyrDown(img) #对图像进行下采样

2.代码演示

python 复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread('Genshin.jpeg', -1)
cv.imshow('image', img)
img = cv.pyrDown(img)
img = cv.pyrDown(img)
img = cv.pyrDown(img)
cv.imshow('image', img)
cv.waitKey()
相关推荐
Eric.4615 分钟前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
搭贝19 分钟前
上厕所的时间搭好一套系统:AI自动生成实测
开发语言·人工智能·低代码·ai·php·搭贝
明月_清风22 分钟前
SaaS 的三层挣钱逻辑,正在被 AI 从第一层击穿
人工智能·后端
福兮说35 分钟前
秋招复习操作系统并发,我让 AI 生成了一张知识图谱,15 条关系里改了 5 条
人工智能·操作系统·知识图谱·秋招
老A的AI实验室1 小时前
Cyber Weekly #84
人工智能·ai·llm·agi·genai
lie..1 小时前
30天从零开始学AI应用开发(Day 18):文档切分与检索优化:RAG 效果好坏的分水岭
人工智能·ai·大模型
Είναι η κοπέλα1 小时前
显存计算与模型选择:你的显卡能跑多大的模型
人工智能·pytorch·python·开源·conda
ROSF68681 小时前
2026 仿石漆乳液供应商:市场布局与行业发展态势梳理
大数据·人工智能·python
Ada's1 小时前
Skill is all you need
人工智能
Dawson Zhu1 小时前
《Agentic Design Patterns》第 1 章导读:提示词链(Prompt Chaining)
人工智能·语言模型·架构·aigc·agi