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

文章目录

    • 打开图像
    • 默认图像

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

打开图像

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

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

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

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

点击开始按钮,效果如下

在这里插入图片描述

默认图像

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

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

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

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

import matplotlib.pyplot as pltpath = '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 backImgclass AnaFacula():def __init__(self):# 中间代码省略# 初始化图像self.oriImg = np.array(backImg, dtype=float)self.img_ori()

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

备战蓝桥杯--数据结构及STL应用(基础)

今天轻松一点&#xff0c;讲一讲stl的基本操作吧&#xff01; 首先&#xff0c;让我们一起创建一个vector容器吧&#xff01; #include<bits/stdc.h> using namespace std; struct cocoack{ int coco,ck; } void solve(){vector<cocoack> x;for(int i0;i<5;i){…

Elasticsearch Windows版安装配置

Elasticsearch简介 Elasticsearch是一个开源的搜索文献的引擎&#xff0c;大概含义就是你通过Rest请求告诉它关键字&#xff0c;他给你返回对应的内容&#xff0c;就这么简单。 Elasticsearch封装了Lucene&#xff0c;Lucene是apache软件基金会一个开放源代码的全文检索引擎工…

《Linux C编程实战》笔记:管道

从这节开始涉及进程间的通信&#xff0c;本节是管道。 管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性&#xff0c;管道又称之为半双工管道。。管道的这一特点决定了其使用的局限性。 数据只能由一个进程刘翔另一个进程&#xff1b;如果要进行全双工通信…

【C语言】深入理解指针(4)回调函数

目录 回调函数 回调函数的应用 i&#xff0c;简化代码逻辑 ii&#xff0c;实现上下机之间的通讯 回调函数 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被用来调用其所指向…

代码随想录算法训练营29期|day34 任务以及具体任务

第八章 贪心算法 part03 1005.K次取反后最大化的数组和 class Solution {public int largestSumAfterKNegations(int[] nums, int K) {// 将数组按照绝对值大小从大到小排序&#xff0c;注意要按照绝对值的大小nums IntStream.of(nums).boxed().sorted((o1, o2) -> Math.ab…

[Grafana]ES数据源Alert告警发送

简单的记录一下使用es作为数据源&#xff0c;如何在发送告警是带上相关字段 目录 前言 一、邮件配置 二、配置 1.Query 2.Alerts 总结 前言 ES作为数据源&#xff0c;算是Grafana中比较常见的&#xff0c;Alerts告警是我近期刚接触&#xff0c;有一个需求是当表空间大于…

麒麟系统—— openKylin 安装 Nacos

麒麟系统—— openKylin 安装 Nacos 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。2. 确保 java 已经安装完毕3. 确保 Maven 已经安装完毕 二、下载 nacos三、解压与运行解压 关于 nacos 配置 本文将分享如何在麒麟系统 openKylin 上安装 Nacos。 一、准备工作 1. …

【文本到上下文 #6】Word2Vec、GloVe 和 FastText

一、说明 欢迎来到“文本到上下文”博客的第 6 个系列。到目前为止&#xff0c;我们已经探索了自然语言处理的基础知识、应用和挑战。我们深入研究了标记化、文本清理、停用词、词干提取、词形还原、词性标记和命名实体识别。我们的探索包括文本表示技术&#xff0c;如词袋、TF…

Google Chrome 中出现 ERR_SSL_KEY_USAGE_INCOMPATIBLE 错误

证书的方式发生了变化&#xff0c;出现了这个新错误&#xff0c;导致我无法浏览该网站。 可以右键属性获取位置 关闭导航器chrome并转到文件夹&#xff0c;找到Local State文件并删除 执行指令结束进程&#xff0c;重新打开浏览器即可 taskkill /im "chrome.exe"…

Linux:共享内存VS消息队列VS信号量

文章目录 共享内存的通信速度消息队列msggetmsgsndmsgrcvmsgctl 信号量semgetsemctl 内核看待ipc资源单独设计的模块ipc资源的维护 本篇主要是基于共享内存&#xff0c;延伸出对于消息队列和信号量&#xff0c;再从内核的角度去看这三个模块实现进程间通信 共享内存的通信速度…

【webrtc】m98 : vs2019 直接构建webrtc及moduletest工程 2

字数有限制,我们继续 【webrtc】m98 : vs2019 直接构建webrtc及unitest工程 1modules_unittests 构建 Build started... 1>------ Build started: Project: modules_unittests, Configuration: GN Win32 ------ 1>ninja: Entering directory `G:\CDN\rtcCli\m98\src\o…

redis-4 集群

应用场景 为什么需要redis集群&#xff1f; 当主备复制场景&#xff0c;无法满足主机的单点故障时&#xff0c;需要引入集群配置。 一般数据库要处理的读请求远大于写请求 &#xff0c;针对这种情况&#xff0c;我们优化数据库可以采用读写分离的策略。我们可以部 署一台主服…