首页天道酬勤opencv安装教程python,栅格数据投影转换

opencv安装教程python,栅格数据投影转换

张世龙 05-13 08:38 113次浏览

使用opencv-python球面投影图像

使用opencv-python球面投影图像

目录效果

原理

完整的代码

将一张摄影图像球面投影,效果如图所示

因为opencv-python没有给出球面投影函数,所以只能自己手写算法。 以下是该算法的基本原理。

首先,假设原始图像位于球体表面。 因此,拍摄的图像只能反映x、y二维平面的几何关系,不能表现z方向的几何关系。 因此,必须假设图像位于半径为r的球体表面的下半部分,如图所示。

假设从p点看图像,建立从p点(0,0,h )到球面上图像上的任意一点p2 ) x、y、z )在平面上映射的映射关系,则如下。

是的,如果在p3=PK(p2-p )下,输入p3=) px、py、pz

k=(pz-h )/(z-h ) ) ) )。

px=kx

py=ky

在上式中,x、y可以从原始图像直接获得,z由假定为x、y的球半径r表示:

将上述表达式写在代码中,完整的代码如下

#author: FarryNiu

# https://niuzi fan.blog.csdn.net/article/details/108394740

导入cv2

import numpy as np

img=cv2.imread(ori.jpg ) ) ) )。

rows=img.shape[0]

cols=img.shape[1]

blank=NP.Zeros_like(img )

# blank=NP.zeros ((4000,4000,3 ) )

#圆的中心为图像的中心

center_x=int(Rows/2 ) )

center_y=int(cols/2 ) )

#假设球的半径

r=int () ((Rows**2cols**2) **0.5 )/2 ) 20

#假设映射平面位于z=r

pz=r

forxinrange(Rows ) :

ox=x

x=x - center_x

财富(酷) :

oy=y

y=y - center_y

z=(r*r-x*x-y*y ) ) **0.5

#假设您看到映射点(0,0,2r )

k=(p/(z - 2*r )z-2*r ) ) ) ) ) ) ) 65

px=int(k*x ) )

py=int(k*y ) )

px=px center_x

py=py center_y

blank[px,py,]=img[ox,oy,]

CV2.imwrite(out.jpg )、blank ) )。

使用opencv-python进行图像球面投影的教程

球面的切柱面是什么,源代码与算法 matlab画旋转抛物面的图代码,matlab绘制旋转抛物面