首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >OpenCV中三种基础的图像变换

OpenCV中三种基础的图像变换

作者头像
OpenCV学堂
发布2026-04-02 18:28:01
发布2026-04-02 18:28:01
640
举报
几何变换

几何变换包括旋转、缩放、平移等基本操作。OpenCV提供了多种函数来实现这些变换

代码语言:javascript
复制
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 获取图像中心、旋转角度和缩放因子
rows, cols = img.shape[:2]
center = (cols / 2, rows / 2)
angle = 45  # 旋转角度
scale = 1   # 缩放因子
# 获取旋转矩阵
M = cv2.getRotationMatrix2D(center, angle, scale)
# 应用旋转变换
dst = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('Original Image', img)
cv2.imshow('Rotated Image', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

透视变换

透视变换是一种将二维图像投影到一个新的平面上的变换方法。它可以用来校正图像中的透视畸变,例如从不同角度拍摄的图片

代码语言:javascript
复制
定义输入和输出点:
选择图像上的四个点和它们在目标平面上的对应位置。

获取变换矩阵:
使用 cv2.getPerspectiveTransform 函数获取透视变换矩阵。

应用变换:
使用 cv2.warpPerspective 函数应用变换。

代码演示如下:

代码语言:javascript
复制
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 定义四个点及其对应位置
pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]])
pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]])
# 获取透视变换矩阵
M = cv2.getPerspectiveTransform(pts1, pts2)
# 应用透视变换
dst = cv2.warpPerspective(img, M, (300,300))
cv2.imshow('Original Image', img)
cv2.imshow('Transformed Image', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

极坐标变换

极坐标变换将图像从笛卡尔坐标系转换为极坐标系,或者反之。这在处理具有圆形对称性的图像时非常有用。

代码语言:javascript
复制
import cv2
import numpy as np
# 读取图像
img = cv2.imread('D:/polar_test.bmp', cv2.IMREAD_GRAYSCALE)
# 获取图像中心和半径
rows, cols = img.shape
center = (cols // 2, rows // 2)
maxRadius = max(cols // 2, rows // 2)
dst = cv2.warpPolar(img, None, center, maxRadius, flags = cv2.INTER_LINEAR | cv2.WARP_FILL_OUTLIERS)
cv2.imshow('Original Image', img)
cv2.imshow('Polar Image', dst)
cv2.imwrite("D:/result.jpg", dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档