python打造光斑处理系统2:打开图像和默认图像

news2024/11/17 17:28:00

文章目录

    • 打开图像
    • 默认图像

光斑处理:python处理高斯光束的图像
光斑处理系统:程序框架

打开图像

光斑图像的本质是光强在空间中的分布,而有的时候,通过CCD拍到的图像往往存成虚假的RGB格式,所以在打开图像时,需要判断其维度,如果有多个通道,需要将其转换为单个通道的灰度图像。

在我们的框架中,img_open实现打开图像的功能,考虑到在打开图象时需要进行文件交互,所以引入文件对话框。下面代码就是对img_open的实现,需要注意,这是一个类的方法,复制到类中时需要注意缩进。

from tkinter.filedialog import askopenfilename

# class AnaFacula():
# ...
    def img_open(self):
        name = askopenfilename(title="请打开图片")
        if name=="":
            return
        img = plt.imread(name).astype(float)
        if len(img.shape)==3:
            img = img[:,:,0]
        self.oriImg = img
        self.img = img + 0
        self.imgShow()

其中,self.oriImg是原图,self.img是经过处理后的图像,之所以加上一个0,目的是实现深拷贝的效果,使之与self.oriImg指向不同的内存区域。

点击开始按钮,效果如下

在这里插入图片描述

默认图像

在打开软件的时候,图窗中有一张默认图片,目前这张图片并不是光斑,而是通过随机数生成的一个噪声。

为了让这个程序更加友好,初始化时最好显示一张可供处理的光斑图像,一种比较简单的方案,就是直接将图像的相对路径引入初始化函数,但这样做有个问题,即对程序打包之后,这张图片就需要作为程序包外面的单个文件,很容易遗失,使得程序中的相对路径失效,进而导致程序崩溃。

一种比较优雅的方式,是将图像的数据封装到一个.py文件中,然后通过import的方式导入。

为此,最简单的方法,就是打开一张图像后,将其所有数值打印出来,为其赋予一个变量之后,再存储为文件。

import matplotlib.pyplot as plt

path = 'test.bmp'

def saveImgAsTxt(path):
    img = plt.imread(path).astype(int)
    if len(img.shape)==3:
        img = img[:,:,0]
    ds = []
    for row in img:
        data = ','.join([str(c) for c in row])
        ds.append(f"[{data}]")
    s = 'backImg = [' + ',\n'.join(ds) + ']'
    with open('backImg.py', 'w') as f:
        f.write(s)

saveImgAsTxt(path)

其内容大致如下

在这里插入图片描述
打眼看去,基本每一行都是 3 , 3 , 3 , 3 , ⋯ 3,3,3,3,\cdots 3,3,3,3,,或者偶尔有一些 4 4 4,这些都是图像的背底。

接下来修改self.oriImg的初始化方法

from backImg import backImg

class AnaFacula():
    def __init__(self):
        # 中间代码省略
        # 初始化图像
        self.oriImg = np.array(backImg, dtype=float)
        self.img_ori()

从而打开软件后,显示情况如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1419670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI大语言模型学习笔记之三:协同深度学习的黑魔法 - GPU与Transformer模型

Transformer模型的崛起标志着人类在自然语言处理(NLP)和其他序列建模任务中取得了显著的突破性进展,而这一成就离不开GPU(图形处理单元)在深度学习中的高效率协同计算和处理。 Transformer模型是由Vaswani等人在2017年…

【机器学习300问】20、什么是神经网络?和深度学习什么关系?

在学习深度学习的相关知识之前,我们首先得了解什么是神经网络,解开神经网络的神秘面纱后,什么是深度学习的问题也就迎刃而解。我依旧会采用我习惯的方式:先给出例子直观理解,在给出定义深入理解,最后在实际…

HarmonyOS NEXT 星河版项目案例

参考代码:HeimaHealthy: 鸿蒙项目案例练习 (gitee.com) 1.欢迎页面 Entry Component struct WelcomePage {State message: string Hello Worldbuild() {Column({space: 10}) {Row() {// 1.中央slogonImage($r(app.media.home_slogan)).width(260)}.layoutWeight(…

二叉搜索树的后序遍历序列

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

16.Golang结构体标签与json互转

目录 概述实践结束 概述 本文主要介绍 Golang 中结构体与json互相转化 实践 完整的代码如下: package mainimport ("encoding/json""fmt" )type Movice struct {Title string json:"title"Year int json:"year&qu…

【论文阅读|半监督小苹果检测方法S3AD】

论文题目 : : Semi-supervised Small Apple Detection in Orchard Environments 项目链接:https://www.inf.uni-hamburg.de/en/inst/ab/cv/people/wilms/mad.html 摘要(Abstract) 农作物检测是自动估产或水果采摘等精准农业应用不…

搭建 prometheus + grafana + springboot3 监控

下载安装包 下载prometheus:https://github.com/prometheus/prometheus/releases/download/v2.42.0/prometheus-2.42.0.windows-amd64.zip 下载grafana: https://dl.grafana.com/enterprise/release/grafana-enterprise-9.4.1.windows-amd64.zip Spr…

优化器刺客之limit 1--Order by col limit n 代价预估优化探索

一、现象 order by 排序加了limit后更慢了? test# explain analyze select userid from dba_users where username like %aaaaaaaaaaaaaaaaaa% order by userid ;QUERY PLAN --------------…

Android Gradle Sync Task list is empty

问题 有时候 Android studio 打开项目,可能会遇到构建没有明显报错,但是 Gradle 却没有 Task list,或者 Task list 不完整只有零星几个配置项。连打包任务都没有,我怎么打包! 异常情况: 正常情况&#xf…

【Python机器学习系列】建立XGBoost模型预测心脏疾病(完整实现过程)

一、引言 前文回顾: 一文彻底搞懂机器学习中的归一化与反归一化问题 【Python机器学习系列】一文彻底搞懂机器学习中表格数据的输入形式(理论源码) 【Python机器学习系列】一文带你了解机器学习中的Pipeline管道机制(理论源码…

启发式搜索(A*、IDDFS、IDA*)

我们在解决图问题的时候,通常需要使用DFS和BFS搜索,可是这两种搜索方式的效率较低,我们会遍历到很多空白节点,有没有办法可以优化这种低效问题呢?今天要推出我们的主角:启发式搜索。 一、A* 什么是A*算法…

关于如何将Win幻兽帕鲁服务端存档转化为单人本地存档的一种方法(无损转移)

本文转自博主的个人博客:https://blog.zhumengmeng.work,欢迎大家前往查看。 原文链接:点我访问 **起因:**最近大火的开放世界缝合体游戏幻兽帕鲁的大火也是引起了博主的注意,然后博主和周边小伙伴纷纷入手,博主也是利…

npm 和 yarn 的使用

安装 yarn npm i yarn -g查看版本 npm -v yarn --version切换 npm/yarn 的下包镜像源 // 查看当前的镜像源 npm config get registry// 切换淘宝镜像源 // 新的淘宝源,旧的淘宝源已于2022年05月31日零时起停止服务 npm config set registry https://registry.…

【英语趣味游戏】填字谜(Crossword)第2天

谜题出处 柯林斯字谜大全(6),Collins——Big Book of Crosswords (Book 6) Puzzle Number: 115 本期单词 横向 1、Fetch (8) 拿,取,8个字母 答案:Retrieve,取到,拿回 5、Common s…

【JaveWeb教程】(34)SpringBootWeb案例之《智能学习辅助系统》的详细实现步骤与代码示例(7)配置文件的设置

目录 SpringBootWeb案例054. 配置文件4.1 参数配置化4.2 yml配置文件4.3 ConfigurationProperties SpringBootWeb案例05 前面我们已经实现了员工信息的条件分页查询以及删除操作,以及实现新增和修改员工。 本节的主要内容: 配置文件的设置 4. 配置文件…

<网络安全>《10 高级威胁检测系统ATD》

1 APT 高级长期威胁(英语:Advanced Persistent Threat,缩写:APT),又称高级持续性威胁、先进持续性威胁等,是指隐匿而持久的电脑入侵过程,通常由某些人员精心策划,针对特…

FairGuard游戏加固入选《CCSIP 2023中国网络安全行业全景册(第六版)》

2024年1月24日, FreeBuf咨询正式发布《CCSIP 2023中国网络安全行业全景册(第六版)》。本次发布的全景图,共计展示20个一级分类、108个细分安全领域,旨在为广大企业提供网络安全产品选型参考,帮助企业了解中国网络安全技术与市场的…

selenium总结-css 定位高级语法

文章目录 推荐的定位方式的优先级定位元素的注意事项(划重点)CSS选择器组成id 选择器class 选择器标签选择器分组选择器属性选择器组合选择符伪类最佳实践 推荐的定位方式的优先级 优先级最高:ID优先级其次:name优先级再次&#…

C++3.0

#include <iostream>using namespace std;class Per//封装一个Per类 { private://表示私有属性string name;//姓名int age;//年龄int *height;//身高double *weight;//体重 public://无参构造函数Per(){cout << "Per::无参构造函数" << endl;}//有…

IndexedDB查询

Indexeddb 创建、增删改查_indexdb 删除表-CSDN博客本地数据库IndexedDB - 学员管理系统之条件筛选&#xff08;四&#xff09;_indexdb条件查询-CSDN博客 <div align"center"><input type"text" id"input_search"> <button id&q…