c语言矩形极坐标变成圆,OpenCV图像变换二 投影变换与极坐标变换实现圆形图像修正...

本文介绍了如何使用OpenCV进行投影变换和极坐标变换,以将图像中的矩形校正为圆形。通过getPerspectiveTransform函数计算投影变换矩阵,并使用warpPerspective函数进行变换。同时,详细阐述了极坐标变换的原理和步骤,包括笛卡尔坐标到极坐标的转换以及极坐标到笛卡尔坐标的转换,展示了如何利用这些变换实现图像修正,将圆环图像转换为矩形图像。
摘要由CSDN通过智能技术生成

##投影变换## 在放射变换中,物体是在二维空间中变换的。如果物体在三维空间中发生了旋转,那么这种变换就成为投影变换,在投影变换中就会出现阴影或者遮挡,我们可以运用二维投影对三维投影变换进行模块化,来处理阴影或者遮挡。在OpenCV中有类似于getAffineTransform函数:getPerspectiveTransform(src,dst)函数 用来处理计算投影变换矩阵。与getAffineTransform函数不同的是传入的参数是三维空间坐标系的空间坐标,也就是4*2的二维ndarray,其中每一行代表一个坐标并且传入的数据类型必须为float32.示例:

import cv2

import numpy as np

src=np.array([[0,0],[100,0],[0,100],[100,100]],np.float32)

dst=np.array([[100,10],[100,10],[50,70],[200,150]],np.float32)

P=cv2.getPerspectiveTransform(src,dst)

print(P)

运行结果:

[[-7.77156117e-16 -1.00000000e+00 1.00000000e+02]

[-2.77555756e-15 -1.00000000e-01 1.00000000e+01]

[-2.66713734e-17 -1.00000000e-02 1.00000000e+00]]

由结果可以看出当前输出的类型是float64.对于仿射变换在OpenCV中提供了如下的函数 cv2.warpPerspective(src,M,dsize[,dst[,flags[,borderMode[,borderValue]]]]) 输入的矩阵类型是3行3列的投影变换矩阵。示例:

import cv2

import numpy as np

import matplotlib

def Perspect(path):

img=cv2.imread(path,cv2.IMREAD_GRAYSCALE)

if not isinstance(img, np.ndarray):

print('PASS')

pass

else:

h,w=img.shape

#设置变换坐标变化

src=np.array([[0,0],[w-1,0],[0,h-1],[w-1,h-1]],np.float32)

dst=np.array([[100,100],[w/3,100],[100,h-1],[w-1,h-1]],np.float32)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值