Python_Tkinter和OpenCV模拟行星凌日传输光度测定

2023-12-21

传输光度测定

在天文学中,当相对较小的天体直接经过较大天体的圆盘和观察者之间时,就会发生凌日。 当小物体移过较大物体的表面时,较大物体会稍微变暗。 最著名的凌日是水星和金星对太阳的凌日。

借助当今的技术,天文学家可以在凌日事件期间探测到遥远恒星光线的微妙变暗。这项技术称为凌日光度测定法,可输出恒星亮度随时间变化的图。

在上图中,光曲线图上的蓝点代表恒星发出的光的测量值。 当行星没有位于恒星上方时(图中位置1),测量到的亮度最大。 (当系外行星经历其阶段时,我们将忽略从系外行星反射的光,这会略微增加恒星的表观亮度)。

当行星的前缘移动到圆盘上(位置 2)时,发出的光逐渐变暗,在光曲线中形成斜坡。 当整个行星在圆盘上可见时(位置 3),光变曲线变平,并保持平坦,直到行星开始退出圆盘的远端。 这会产生另一个斜坡(位置 4),该斜坡不断上升,直到行星完全脱离圆盘(位置 5)。 此时,光变曲线在其最大值处变平,因为恒星不再被遮挡。

由于凌日期间阻挡的光量与行星圆盘的大小成正比,因此可以使用以下公式计算行星的半径:
R p = R s  深度  R_{\mathrm{p}}=R_{\mathrm{s}} \sqrt{\text { 深度 }} R p = R s 深度
其中 R p Rp Rp 是行星的半径, R s Rs R s 是恒星的半径。 天文学家利用恒星的距离、亮度和颜色来确定恒星的半径,这与恒星的温度有关。 深度是指传输过程中亮度的总变化,如下图所示。

代码实现

以下 Python 程序使用 OpenCV 生成系外行星凌日的视觉模拟,使用 Matplotlib 绘制所得的光曲线,并将两者一起显示在仪表板中。

为了生成光曲线,我们需要能够测量亮度的变化。我们可以使用 OpenCV 通过对像素执行数学运算来做到这一点。

导入库并分配常量
import tkinter as tk
import matplotlib.pyplot as plt
import cv2 as cv

IMG_HT, IMG_WIDTH = 400, 500
BLACK_IMG = cv.imread('limb_darkening.png')
EXO_RADIUS = 7
EXO_DX = 3
EXO_START_X = 40
EXO_START_Y = 230
NUM_FRAMES = 145
定义创建仪表板的函数
def create_dashb(root):
    fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 6))
    canvas = FigureCanvasTkAgg(fig, master=root)
    canvas_widget = canvas.get_tk_widget()
    canvas_widget.pack(side=tk.TOP, fill=tk.BOTH, expand=1)
    
    intensity_samples = []
    exo_start_x = EXO_START_X

    for _ in range(NUM_FRAMES):
        temp_img = BLACK_IMG.copy()
        cv.circle(temp_img, (exo_start_x, EXO_START_Y), EXO_RADIUS, 0, -1)
        intensity = temp_img.mean()
        intensity_samples.append(intensity)
        relative_brightness = calc_rel_brightness(intensity_samples)

        canvas.draw()
        root.update()
        root.after(3)

源代码

参阅一 - 亚图跨际
参阅二 - 亚图跨际
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python_Tkinter和OpenCV模拟行星凌日传输光度测定 的相关文章

  • 下载 PyQt6 的 Qt Designer 并使用 pyuic6 将 .ui 文件转换为 .py 文件

    如何下载 PyQt6 的 QtDesigner 如果没有适用于 PyQt6 的 QtDesigner 我也可以使用 PyQt5 的 QtDesigner 但是如何将此 ui 文件转换为使用 PyQt6 库而不是 PyQt5 的 py 文件
  • 如何在刻度标签和轴之间添加空间

    我已成功增加刻度标签的字体 但现在它们距离轴太近了 我想在刻度标签和轴之间添加一点呼吸空间 如果您不想全局更改间距 通过编辑 rcParams 并且想要更简洁的方法 请尝试以下操作 ax tick params axis both whic
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 为美国东部以外地区的 Cloudwatch 警报发送短信?

    AWS 似乎没有为美国东部以外的 SNS 主题订阅者提供 SMS 作为协议 我想连接我的 CloudWatch 警报并在发生故障时接收短信 但无法将其发送到 SMS YES 经过一番挖掘后 我能够让它发挥作用 它比仅仅选择一个主题或输入闹钟
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐

  • 基于vue-cli快速发布vue npm 包

    一 编写组件 1 初始化项目并运行 vue create vue digital count npm run serve 2 组件封装 新建package文件夹 因为我们可能会封装多个组件 所以在src下面新建一个 package 文件夹用
  • 简易版chalk

    简易版chalk chalk chalk Terminal string styling done right github com MINI 系列 五颜六色的控制台 ANSI转义序列 维基百科 自由的百科全书 wikipedia org
  • Different WiFi cards -QCN9274

    华为上海青浦研究所现状 华为上海青浦 值得一去的杭州外企篇 发展稳定 专业不限 双非可入 offer选择 华为上海青浦研究所现状 华为上海青浦研究所现状 华为上海青浦研究所现状 2024届大龄硕士长沙软开求职进展 尾声 牛马 帮选offer
  • Mybatis-plus可视化自动生成代码,提高开发效率神器!

    程序员的公众号 源1024 获取更多资料 无加密无套路 最近整理了一波电子书籍资料 包含 Effective Java中文版 第2版 深入JAVA虚拟机 重构改善既有代码设计 MySQL高性能 第3版 Java并发编程实战 等等 获取方式
  • 学习使用echarts图表中formatter的用法,格式化数字金额,控制x轴、y轴展示长度

    学习使用echarts图表中formatter的用法 格式化数字金额 控制x轴 y轴展示长度 控制金额长度 两位小数 并去除多余 00 效果图 控制文字长度 完整代码 控制金额长度
  • 干货!什么是财务业务化和业务财务化?

    此回答摘录自 自价值财务 以业务与财务的双向奔赴 成就合规与增长双赢 原文近7000字 作者 纷享销客CFO郭保彬先生 更多业财一体化内容详见纷享销客最新专刊 上市公司如何打好合规与增长双赢之战 如今 财务管理已经不再仅限于传统的会计和财务
  • 管理型交换机的优势与配置策略

    在现代网络架构中 管理型交换机 扮演着至关重要的角色 它们相比非管理型交换机 提供了更多的功能和灵活性 管理型交换机的优势 增强的安全性 管理型交换机通过访问控制列表 ACL 和端口安全等功能 有效地防止未授权访问 可配置性和灵活性 用户可
  • 【华为机试真题 Python】开放日活动、取出尽量少的球

    题目描述 某部门开展Family Day开放日活动 其中有个从桶里取球的游戏 游戏规则如下 有N个容量一样的小桶等距排开 且每个小桶都默认装了数量不等的小球 每个小桶装的小球数量记录在数组 bucketBallNums 中 游戏开始时 要求
  • 【08】GeoScene产品发布海图服务——以s57数据标准为例

    在GeoScene产品中发布海图服务 以s57数据标准为例 发布的服务方便不同的客户终端调用 例如 web端通过JS api进行调用 移动端通过GeoScene Runtime SDK进行调用 1 海图服务部署 GeoScene Marit
  • Zoho Mail:1600万企业用户的信赖之选

    Zoho Mail和Workplace在线办公套件一起 已经成长为一个集邮箱 即时通讯 生产力工具于一身的非常全面的强大平台 经过数十年持续深入的研发投入 我们的产品可以很好地服务大型企业 这是Zoho创始人斯瑞达 温布在Zoho Mail
  • 七款创意项目管理软件解决方案推荐:高效项目管理与团队协作工具

    企业无论大小 都离不开项目经理 营销团队和创意人员 他们参与各种头脑风暴 为特定目标打造项目 然而 在创意项目管理中 细节决定成败 若处理不当 可能导致项目失败和混乱 过去 创意项目管理依赖纸质规划文件 如今 科技的崛起让以创新方式规划 跟
  • 邮件进入垃圾邮箱的三大原因及避免方法:有效防止邮件被误判

    经常使用邮件的人 特别是用邮件做营销宣传的企业 可能会遇到这样的问题 发出去的邮件总是进垃圾箱 不仅没起到营销作用 还可能会让邮箱造成被封的风险 怎么避免 我们先来了解 为什么邮件会进垃圾箱 Q1 为什么邮件会进垃圾箱 1 邮件内容质量差
  • 数据库常见面试题 —— 14.数据库高并发问题如何解决

    增加缓存 在web层和db层之间增加一层缓存 减少数据库读取负担 提高数据读取速度 业务拆分 根据业务规模和需求 将业务拆分成多个模块 每个模块使用单独的数据库进行存储 以提高系统吞吐量和可用性 使用主从复制 读写分离 通过主从复制技术实现
  • linux 杀死指定端口的进程

    利用kill 9 和 ss antlup命令 kill 9 ss antlup grep 18100 awk print 7 awk F print 3
  • 164页,2023新版《Java面试手册》,抓住机会向前冲

    小伙伴们 2023新版 Java面试手册 来啦 这本小册子总计164页 全都是面试中的高频题目 有兴趣的小伙伴们不妨来看一下 为上岸做一下准备 由于全部内容过多 下面截取部分内容截图 大家可以先来大体看一下 Java基础 由于平台文章篇幅限
  • 大创项目推荐 深度学习 机器视觉 车位识别车道线检测 - python opencv

    0 前言 优质竞赛项目系列 今天要分享的是 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖 适合作为竞赛课题方向 学长非常推荐 学长这里给一个题目综合评分 每项满分5分 难度系数 3分 工作量 3分 创新点 4分 更多资料 项目分享
  • 3D可视化大屏:赋能行业数据可视化应用,让数据更鲜活

    互联网时代 各种数据信息充斥在我们的生活中 对于大量的数据 我们也需要大量的时间才能去分析理解 因此3D可视化大屏的展示无疑是令人兴奋的进步 3D数据大屏能够将数据以更加直观 更加生动的方式呈现出来 结合VR全景技术 将数据立体化 三维化
  • nuxt学习笔记

    主要看的课程1 课程1 课程2 上手简化版 初始化 1 创建项目 使用官方推荐的npx来安装 npm的5 2 x版本后默认安装了npx 首先 确保您已经安装了 yarn npx 默认包含在 npm v5 2 中 或 npm v6 1 使用
  • 性能测试:Jmeter压测过程中的短信验证码读取

    问题背景 现如今国内的大部分软件或者网站应用 普遍流行使用短信业务 比如登录 注册以及特定的业务通知等 对于这些业务 在使用Jmeter进行性能测试的过程中 就会需要自动获取和填入短信验证码 否则性能流程无法进行下去 由于绝大多数的系统其短
  • Python_Tkinter和OpenCV模拟行星凌日传输光度测定

    传输光度测定 在天文学中 当相对较小的天体直接经过较大天体的圆盘和观察者之间时 就会发生凌日 当小物体移过较大物体的表面时 较大物体会稍微变暗 最著名的凌日是水星和金星对太阳的凌日 借助当今的技术 天文学家可以在凌日事件期间探测到遥远恒星光