基于Python实现 传感器的随机布置 传感网覆盖仿真

2023-11-17

代码演示

import tkinter as tk
import random
import win32gui
import cv2
import time
import math
from PIL import Image, ImageGrab

class Window:
    def __init__(self, master):
        self.root = master
        self.createpage()
        self.run()

    def createpage(self):
        self.root.geometry('910x510')
        # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
        self.root.resizable(width=False, height=False)

        tk.LabelFrame(self.root, text='|参数|', fg='black', padx=10, pady=10,
                      font='Verdana 10 bold').place(x=10, y=10, height=180, width=290)
        tk.Label(self.root, text='传感器数量:', fg='black').place(x=15, y=45)
        tk.Label(self.root, text='传感器探测半径:', fg='black').place(x=15, y=115)
        # 创建一个输入框,以输入内容
        self.inputnum_text = tk.StringVar()
        self.inputnum = tk.Entry(self.root, textvariable=self.inputnum_text)
        self.inputnum.place(x=120, y=50)
        
        self.inputradius_text = tk.StringVar()
        self.inputradius = tk.Entry(
            self.root, textvariable=self.inputradius_text)
        self.inputradius.place(x=120, y=120)

        tk.LabelFrame(self.root, text='|结果|', fg='black', padx=10, pady=10,
                      font='Verdana 10 bold').place(x=10, y=215, height=180, width=290)
        tk.Label(self.root, text='理论覆盖率(%):', fg='black').place(x=15, y=250)
        tk.Label(self.root, text='实际覆盖率(%):', fg='black').place(x=15, y=320)

        self.theoryoutput = tk.Text(self.root, width=20, height=1)
        self.theoryoutput.place(x=120, y=255)  # 先创建对象再放置位置,否则会报错

        self.actualoutput = tk.Text(self.root, height=1, width=20)
        self.actualoutput.place(x=120, y=325)

        self.cv = tk.Canvas(self.root, bg='white', height=500, width=600)
        self.cv.place(x=300)
        # 创建按钮
        tk.Button(self.root, text='传感器布置', command=self.circle_create).place(
            x=100, y=400, width=100)
        tk.Button(self.root, text='计算', command=self.Calculation_Area).place(
            x=100, y=460, width=100)

    def Wipe_Data(self):
        # 清空文本框内的内容
        self.theoryoutput.delete(0.0, 'end')
        self.actualoutput.delete(0.0, 'end')

    def CaptureScreen(self):
        # print('执行截图函数')
        HWND = win32gui.GetFocus()  # 获取当前窗口句柄
        self.rect = win32gui.GetWindowRect(HWND)  # 获取当前窗口坐标
        x = self.rect[0] + 300
        x1 = x+self.cv.winfo_width()
        y = self.rect[1]
        y1 = y+self.cv.winfo_height()
        image = ImageGrab.grab((x, y, x1, y1))
        image.save("second.jpeg", 'jpeg')  # 前面一个参数是保存路径,后面一个参数是保存格式

    def Calculation_Area(self):
        self.CaptureScreen()
        # print('执行计算函数')
        self.Wipe_Data()
        img = cv2.imread("second.jpeg")  # 图片读取
        pictue_size = img.shape
        picture_height = pictue_size[0]
        picture_width = pictue_size[1]
        # 输出长和宽
        # print(picture_height,picture_width)
        All_area = 304416.0
        Proportion_area_white = 0
        Proportion_area_blue = 0
        for a in range(picture_height):
            for b in range(picture_width):
                if img[a, b].all() > 0:
                    Proportion_area_white = Proportion_area_white + 1

        Proportion_area_blue = float(All_area - Proportion_area_white)
        # 计算实际输出
        # print(Proportion_area_blue)
        Occupancy_actual = Proportion_area_blue / All_area
        Occupancy_actual = ('%.12f' % Occupancy_actual)
        Occupancy_actual = float(Occupancy_actual)
        Occupancy_actual = Occupancy_actual * 100
        # 计算理论输出
        # 									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Python实现 传感器的随机布置 传感网覆盖仿真 的相关文章

随机推荐

  • java程序员经典错误,请速速收藏

    大家好 我是鱼尾 作为一名 java 开发程序员 不知道大家有没有遇到过一些匪夷所思的bug 有时候在我们碰到错误的时候 可能会花几个小时才能解决 然而当你找到它们的时候 你可能会默默地骂自己是个傻瓜 因为这些可笑的 bug 基本上都是你忽
  • Entry输入框实现登录用户名冷却验证小案例(Tkinter)

    本篇讲一下Entry冷却验证的用法 其实我们在登录注册的时候用户名是否存在的验证一般不能等到全部都填写完后 点击注册再进行判断 最好的办法是在输入用户名时就立刻判断是否存在 这篇内容是在上一篇合法性验证的基础上的升级版 点击查看上一篇 实现
  • XSS数据接收平台——蓝莲花(BlueLotus)

    文章目录 一 前言 二 安装 三 使用 1 我的JS创建一个模板 2 使用创建的模板攻击 3 打开攻击的目标 这里选择pikachu靶场的存储型XSS模块测试 4 查看返回的数据 一 前言 蓝莲花平台是清华大学曾经的蓝莲花战队搭建的平台 该
  • 适合教孩子编码的 7 款免费编程语言

    21CTO导读 计算机编程是一项需求旺盛且欣欣向荣的事业 所以这些日子父母们可能都希望他们的孩子长大后也能成为一名软件程序员 如果想教小孩如何编程 该从哪儿开始呢 可以尝试以下列表中这些对儿童友好的编程语言以及工具 Scratch 海风教育
  • 基于dubbo+RocketMQ+springboot的简单埋点系统

    1 整体架构流程 2 目录详情 consumer 消息消费者项目 provider 方法提供者项目 mq RocketMQ项目 point 打点接口项目 3 关键代码详解 3 1 mq项目 mq properties mq defaultm
  • 最新一键安装jumpserver

    最新一键安装开源堡垒机 jumpserver 安装环境unbun18 预先安装了docker 20 10 12 官网 jumpserver install 执行代码 curl sSL https github com jumpserver
  • IDEA开发SpringBoot+mybatis 新手快速入门

    因为最近学习Java 自己练习springboot和mybatis 练习一下 一 IDEA创建springboot项目 2 pom xml 引用相关文件
  • /home/mobaxterm/anaconda3/conda.exe: cannot execute binary file

    在windows下的linux安装anaconda时 报错如下 解决 uname m 输出为i686 i386到i686 那就是32位系统 如果是x86 64 那就是64系统 所以是anaconda使用的不匹配 换成32位就可以了 最后选择
  • 城市排水管网窨井水位监测系统解决方案

    一 方案背景 排水管网肩负着城市防汛排水 污水收集输送的重任 是城市重要的基础设施 排水管网的正常运行以及对排水管网的科学化管理 对于保障城市的正常运行 稳定社会经济社会发展 安定人民生活起着十分重要的作用 建立排水管网窨井水位监测信息系统
  • Docker+Jenkins+GIT CICD持续化集成实战

    一 需求 开发将源码上传到github仓库 通过jenkins持续集成引擎结合git工具 将源码拉取到jenkins服务器 通过工具maven在本地讲源码编译打包成war包 在ssh到Docker宿主机 通过执行脚本生成制作自定义的Dock
  • axios使用异步方式无感刷新token,简单,太简单了

    文章目录 废话在前 接着踩坑 解决思路 完整代码 废话在前 写vue的伙伴们无感刷新token相信大家都不陌生了吧 刚好 最近自己的一个项目中就需要用到这个需求 因为之前没有弄过这个 研究了一个上午 终于还是把它拿下了 小小的一个token
  • apollo灰度发布

    apollo灰度发布 七 https blog csdn net weixin 42412601 article details 88415437
  • 《STL源码剖析》学习笔记2——神奇的__type_traits

    标签 C C STL 学习 笔记 在STL中为了提供通用的操作而又不损失效率 我们用到了一种特殊的技巧 叫traits编程技巧 具体的来说 traits就是通过定义一些结构体或类 并利用模板类特化和偏特化的能力 给类型赋予一些特性 这些特性
  • Python灰度图像均衡化

    import cv2 import numpy as np from matplotlib import pyplot as plt 读取同文件夹下的lena图像并做灰度化处理 lena plt imread lena jpg lena l
  • 【ADS学习笔记(一)——ADS介绍】

    一 创建Workspace 在创建Workspace时 点击Change Libraries 可以添加和更改元件库 系统默认添加Analog RF 模拟 射频元件库 以及DSP 数字元件库 也可以添加自己下载的元件库 元件库也可以在创建完W
  • 10 分钟上手Web Scraper,从此爬虫不求人

    我现在很少写爬虫代码了 原因如下 网站经常变化 因此需要持续维护代码 爬虫的脚本通常很难复用 因此价值就很低 写简单的爬虫对自己的技能提升有限 对我来不值 但是不写爬虫 就不能方便的获取数据 自己写代码又要花费很多时间 少则一两个小时 多则
  • 用java代码实现图书管理系统

    您好 下面是一个使用 Java 语言实现的图书管理系统的简单示例代码 这个示例包含了一个图书类 Book 和一个图书管理类 BookManager Book 类用于存储图书的信息 包括书名 作者 出版日期等 BookManager 类用于管
  • 解决iview打包时UglifyJs报错

    使用npm run dev时运行是ok的 但是npm run build打包时iview报错 如下 原因是iview中使用了es6语法 然而uglifyJs是不支持的 打开我们的build webpack prod conf js文件 可以
  • spring boot 过滤器实现接收 压缩数据 并解压

    1 新加类GzipRequestWrapper 继承HttpServletRequestWrapper类 public class GzipRequestWrapper extends HttpServletRequestWrapper p
  • 基于Python实现 传感器的随机布置 传感网覆盖仿真

    代码演示 import tkinter as tk import random import win32gui import cv2 import time import math from PIL import Image ImageGr
Powered by Hwhale