今天爱分享给大家带来球面投影图片 python opencv实现[附代码],希望能够帮助到大家。

效果

将一张拍摄图片进行球面投影,效果如图

原理

由于opencv-python中并没有给出球面投影函数,只能自己手写一套算法,以下是此算法的基本原理:

1.首先假设原始图片位于一个球体表面,因此拍摄的图片只能反映x、y二维平面的几何关系,不能体现z方向的几何关系,因此需要假设图片位于一个半径为r的球体表面的下半部分,如图:

2.假设P点为光源,建立一个从P点(0,0,h)到球面上图片上的任意一点P2(x,y,z)映射到平面α的映射关系如图:

3.可得,P3 = P + k(P2 – P),将P3 = (px,py,pz)带入,得

k = (pz – h)/(z – h)

px = kx

py = ky

4.在上式中,x、y均能从原始图片中直接获得,z则用x、y和假设出来得球半径r来表示:

5.将上述公式写在代码中,完整代码如下

完整代码

import 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**2+cols**2)**0.5)/2)+20

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

pz = r

for x in range(rows):

ox = x

x = x - center_x

for y in range(cols):

oy = y

y = y - center_y

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

#假设光源点为(0,0,2r)

k = (pz - 2*r)/(z - 2*r)

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)

python画球面投影_球面投影图片 python opencv实现[附代码]相关推荐

  1. 怎么用python画花瓣_怎么用python画花朵

    怎么用python画花朵?下面给大家讲解一下具体步骤: 第一步,打开菜单栏,输入idle,打开shell. 第二步,新建一个文件,并命名. 第三步,导入turtle模块,创建一个新窗口用于绘图,再创建 ...

  2. 如何用python画椭圆_怎么用python画椭圆?

    使用python画椭圆的方法: 首先使用两行代码引入Matplotlib扩展包:import matplotlib.pyplot as plt from matplotlib.patches impo ...

  3. python 画曲线图_如何使用python画曲线图

    如何使用python画曲线图?下面是基本步骤: 前提 首先,为了实际使用 Matplotlib,我们需要安装它. 安装 如果你安装了更高版本的 Python,你应该能够打开cmd.exe或终端,然后执 ...

  4. 用python画耳朵_如何用python画一只兔子

    python的用处真的是太广泛了,今天在网上学习查找资料时,看到有网友用python来画画.用python画出一只兔子,为大家分享一下:如何用python画一只兔子? 画了一只大耳朵小兔子,灵感来源是 ...

  5. 用python画小兔子_如何用Python画一只兔子——turtle库circle()画圆函数的详细用法介绍...

    周末学习了一下turtle库的基本函数,试着画了一只大耳朵小兔子,灵感来源是jellycat邦尼兔.turtle库中circle()函数用来画弧,但和通常先确定原点,再根据半径.夹角画弧的方法有所不同 ...

  6. 用python画耳朵_如何用python画猪头

    用python画猪头的方法:首先设置画布和画笔,代码为[a.screensize(400,300)a.setup(width=400,height=300)]:然后画脸型,代码为[.goto(-100 ...

  7. python画四角星_如何利用Python|对多角星的绘制

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:编程与算法之美. 1 前言 在初步学习python的过 ...

  8. 如何用python画玫瑰花_如何用python画玫瑰花

    源码如下:import turtle # 设置初始位置 turtle.penup() turtle.left(90) turtle.fd(200) turtle.pendown() turtle.ri ...

  9. python画公主_【图片】来几张公主的手绘【勇敢的公主吧】_百度贴吧

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我靠,太厉害了!!!!!!!!!顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶 ...

  10. 怎么用python画房子_怎么用python画小猪佩奇

    最近社会猪可是火遍了大江南北,不蹭下热度可对不起它.见过手画的佩奇,见过用代码画的吗? 没有?那就来看我大显身手. 用python的turtle库来画小猪佩奇. 有人问:turtle难不难? 答曰:不 ...

最新文章

  1. 【ECCV 2018】Facebook开发姿态转换模型,只需一张照片就能让它跳舞(视频)
  2. MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的真正原因...
  3. CEO 赠书 | 甲之蜜糖乙之砒霜,创新者也将成为守旧者
  4. GatewayMetricsFilter网关度量过滤器(服务监控)
  5. Python中sort()和sorted()的区别
  6. mysql数据库内置函数大全_(MariaDB)MySQL内置函数大全
  7. CentOS 7使用通过二进制包安装MySQL 5.7.18
  8. jquery 固定导航
  9. Swift 枚举的用法
  10. matplotlib 2.2.4 has requirement python-dateutil=2.1, but you'll have python-dateutil 1.5
  11. java图书借阅系统java图书管理系统java书籍借阅系统
  12. oracle 手机壁纸,盘卷先知 Coiling Oracle壁纸图片65 - 猫猫壁纸酷 wallcoo.com
  13. C语言struct 函数,C语言结构体史上最详细的讲解
  14. 电脑锁屏挂机锁绿色版简单实用工具
  15. 响应式的优点和缺点??
  16. 数据库迁移 软件Spoon Kettle环境搭配(本人踩过的坑)
  17. Vue组件编写之Alert提示框组件编写
  18. 培训机构让Github的含金量降低了?
  19. CTU-UHB Intrapartum Cardiotocography Database 产时CTG信号数据下载与读取(2021.7.9 新增阿里云盘下载)
  20. 对rman命令report obsolete的一点说明

热门文章

  1. ANTLR中文手册之三(ANTLR 元语言-元语言词汇表)
  2. 从IRQ到IRQL(PIC版)
  3. python登录华为路由器
  4. 收集的vue各种库,UI库等
  5. 一套工地实名制考勤管理系统有哪些软硬件组成
  6. matlab检验数据异方差,求教!怀特异方差检验方法在matlab中的实现,以及广义最........
  7. 分享一个qt实现的登录界面模板
  8. 问题解决逻辑:深度和广度谁应该优先?
  9. 【Windows】键盘禁用(屏蔽)Win快捷键
  10. 典型的递归计算费氏数列