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()
相关推荐
大数据在线8 小时前
布局Agentic AI,亚马逊云科技组合拳再升级
人工智能·openai·亚马逊云科技·智能体·agentic ai
皮皮学姐分享-ppx12 小时前
政府绿色采购数据库(2015-2024.3)
大数据·网络·数据库·人工智能·制造
GIS数据转换器12 小时前
基于3D GIS的监控视频精准标定平台
人工智能·物联网·3d·音视频·无人机·知识图谱
专注VB编程开发20年12 小时前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
深小乐12 小时前
Claude Fable5 尝鲜,效果挺不错
人工智能
Nayxxu12 小时前
Gemini + RAG 企业知识库教程:从文档切片到答案生成
运维·人工智能
冬奇Lab12 小时前
真正的 AI-Native Workflow 是什么?——四个判断测试
人工智能·agent
冬奇Lab12 小时前
每日一个开源项目(第128篇):Agent Skills - 给 AI 编程 Agent 装上工程纪律
人工智能·开源·资讯
Deepoch13 小时前
Deepoc VLA开发板:采摘机器人的环境鲁棒作业与不确定性应对
人工智能·机器人·采摘机器人·deepoc