自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 两种特征图self-Attention-block上算法差异的个人见解

本篇纯个人见解,如有错误请指出文章素材及资料来源【极市】李夏-语义分割中的自注意力机制和低秩重建[https://www.bilibili.com/video/BV11E411y7Dr]流程图左为NonLocal,右为A^2,其中N代表特征图中的像素数目,C代表channel数,HW为高宽,我们都知道C的数量一定是远小于N的数量的,K代表种类由于矩阵的乘法结合律,这两种算法计算出来的信息是差不多的对比两个都计算复杂度,左边的复杂度相当于是NNC,右边为NCCNonLocalQ与K叉乘对

2021-09-08 17:18:33 638

原创 [Pyqt-Node-Editor]Nodeeditor文档--Coding Standards(编码标准)

Coding Standards在整个 nodeeditor 包中使用以下规则和指南:File naming guidelines(文件命名指南)nodeeditor 包中的文件以 node_ 开头包含图形表示(PyQt5 覆盖类)的文件以 node_graphics_ 开头窗口/小部件的文件以 node_editor_ 开头Coding guidelines(编码指南)方法使用驼峰命名法变量/属性使用 Snake 大小写命名构造函数__init__始终包含整个类的所有类变量。这对新

2021-08-23 14:15:49 717

原创 [Pyqt-Node-Editor]Nodeeditor文档--Evaluation(评估)

EvaluationTL;DR: 评估系统使用 eval()和 evalChildren()。eval()方法应该被您自己的实现覆盖。评价逻辑使用标志用于标记所述节点是脏和/或无效的。Evaluation Functions有两种主要的评估方法:eval()evalChildren()这些功能是相互排斥的。这意味着,evalChildren确实不eval当前节点,但只有当前的孩子节点。默认情况下, 的实现eval()是“空”并返回 0。然而,这似乎是合乎逻辑的,该 eval(如果成功)将N

2021-08-23 14:05:51 408

原创 [Pyqt-Node-Editor]Nodeeditor文档--Serialization(序列化)

Serialization所有可序列化的类都派生自Serializable类。 Serializable确实为我们的类创建了常用的参数。在我们的例子中,它只是id 属性。Serializable定义了两个应该在子类中重写的方法:serialize()deserialize()根据编码标准,我们将这两个函数放在类源代码的底部。为了包含我们使用的所有数据,我们需要使用 OrderedDict 来替代传统python词典. 主要是因为我们要保留文件中序列化参数的顺序。派生的子类Serializa

2021-08-23 13:45:20 298

原创 [Pyqt-Node-Editor]Nodeeditor文档--Event system(事件系统)

Event systemNodeeditor 使用自己的事件(并尽量避免使用pyqtSignal)来处理场景内发生的逻辑。如果一个类确实处理了一些事件,它们通常会在本文档的页面顶部进行描述。任何事件都可以订阅,注册回调的方法可以被调用:add<EventName>Listener(callback)具体可以看下源代码您可以随时注册这些活动中的任何一个。Events used in NodeEditor:SceneHas Been Modified当Scene中发生改变时It

2021-08-23 13:40:21 313

原创 [Pyqt-Node-Editor]Nodeeditor文档--node_node

Node_node模块包含用于表示Node 的NodeEditor 类的模块。class nodeeditor.node_node.Node(scene: Scene, title: str = 'Undefined Node', inputs: list = [], outputs: list = [])Bases: nodeeditor.node_serializable.SerializableClass representing Node in the Scene.Parameters(

2021-08-23 13:01:03 774

原创 [PyQt5-Node-Editor]如何获取节点编辑器代码,以及帮助文档

介绍如何获取节点编辑器链接Tutorial Series WebGitLab repositoryDocumentationFAQ为原作者捐赠Discord获取文档他的文档不全(也没有更新),需要自己git他的仓库,然后对doc里的build.py运行,进行文档编译成HTML这样文档才是全的先需要安装:pip install sphinx sphinx_intl sphinx_rtd_theme recommonmark之后在这个目录下运行build.py即可得到文件bu

2021-08-03 17:04:11 458

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(25)——标题显示文件修改状态

1

2021-08-02 14:06:24 738

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(24)——修BUG

BUG导航修复各种BUGEdge在多次复制后可能出现消失的显示BUG切割线崩溃BUG当连线连接自己时会崩溃修复各种BUGEdge在多次复制后可能出现消失的显示BUG在缩小放大后Edge又能正常显示需要在node_graphics_edge.py里添加如下代码,让edge能够一直刷新(可能) def boundingRect(self): return self.shape().boundingRect() def shape(self): re

2021-07-25 18:50:08 335

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(23)——实现剪贴板功能

目标实现剪贴板功能实现剪贴板完整代码from collections import OrderedDictfrom node_graphics_edge import QDMGraphicsEdgefrom node_node import Nodefrom node_edge import Edge, EDGE_TYPE_BEZIERDEBUG = Falseclass SceneClipboard(): def __init__(self,scene):

2021-07-25 15:42:09 321 3

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(22)——如何实现剪贴板操作

导航目标实现该复制什么如何复制序列化内容建立新类,实现剪贴板功能Edit内添加剪贴板功能目标设置复制粘贴剪切的选项复制Node,edge等内容粘贴到Scene中实现该复制什么如果我们要对node和edge进行复制,那么我们需要复制的是什么东西是复制对象吗,当然不是在前面的内容就以及给了答案,我们将scene里的内容进行了序列化保存,以及反序列化解压读取那么,答案就显然易见了,我们需要复制的是序列化内容如何复制序列化内容 def deserialize(self, data,

2021-07-25 13:02:02 262

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(21)——实现主窗口

导航目标实现将之前的NodeEditWind改为NodeEditWidget主界面代码详解建立一个菜单栏功能范本将View的按键功能移植到主界面事实坐标显示目标本章节里将真正的重点实现主界面的建立,以及功能的实现,将之前View上的按键功能移至主界面在主界面中心放置View,下面添加statusBar,上面添加菜单栏,并且statusBar将实现当前鼠标在场景的位置显示,以及保存成功等消息的显示实现将之前的NodeEditWind改为NodeEditWidgetNodeEditWind将不再担

2021-07-25 10:03:03 965 2

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(20)——撤销与重做(三)历史戳

目标本章将实现以下功能当鼠标选中Node或者Edge时,将记录历史当Edge或者Node被删除时,记录历史当Node被移动的时候,记录历史crlt + z为undoshift + crlt + z为redo实现本章主角–历史戳的建立为了实现能够保存历史,redo,undo,就必须建立一个东西来负责储存历史,redo和undo去读取已经存储的历史,即我们需要建立一个历史戳也就是createHistoryStamp负责处理并返回的东西def createHistoryStamp(se

2021-07-24 15:57:25 429

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(19)——撤销与重做(二)历史堆栈

DEBUG = Trueclass SceneHistory(): def __init__(self,scene): self.scene = scene self.history_stack = [] self.history_current_step = -1 self.history_limit = 8 def undo(self): if DEBUG: print('un

2021-07-23 20:40:46 362 2

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(18)——撤销与重做(一)介绍

如何做我想用一张图来简单明了的说明首先建立一条历史堆栈,最大长度为8(0-7)每次操作都会储存到历史堆栈里面,想要找到对应的历史,可以通过指针p来寻址,找到对应历史undo会使指针位置往回偏移,在p>=0的条件下redo会使指针向前偏移,在当前指针位置小于历史堆栈总长的条件下...

2021-07-18 17:32:03 381

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(17)——解码,读取Scene

def deserialize(self, data, hashmap={}): print('解码数据', data) self.clear() hashmap = {} #创建nodes for node_data in data['nodes']: Node(self).deserialize(node_data, hashmap) #创建edges ...

2021-07-18 16:02:46 499 1

原创 [PyQt5-Node-Editor][进阶篇]使用Pyqt5制作节点编辑器(16)——序列化,保存Scene

目标能够将scene数据保存为一个JSON文件,方便读取和保存{ "id": 2586028185080, "scene_width": 64000, "scene_height": 64000, "node": [ { "id": 2586029654760, "title": "这是一个节点", "pos_x": -350.0, "pos_y": -250.

2021-07-18 13:11:26 636 1

原创 [PyQt5-Node-Editor][基础篇](完)从零开始使用Pyqt5制作节点编辑器(15)——切割线

导航目标实现按下鼠标左键绘制切割线鼠标移动切除方法目标按住鼠标左键和crtl键进入切割模式,edge在被切割的路径上就会被切除实现定义一个新模式,切割模式MODE_EDGE_CUT = 3按下鼠标左键由于需要按下鼠标左键和crtl,那么这个这个模式肯定是在view里的leftMouseButtonPress(self, event)里判断并执行则在leftMouseButtonPress(self, event)新增代码if item is None: if event.mod

2021-07-15 21:43:14 890 6

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(14)——实现Item删除

代码写得深,BUG永相存导航目标实现修复BUG建立delete键触发事件node的remove方法新的BUG再次修复BUG又一个新的BUG解决BUG的方法目标选中单个Node后,按delete键,会删除对应node以及他所连接的线,不仅仅是显示效果上删除了,在scene列表里也删除掉了多选也能进行删除单独的edge也能删除实现修复BUG在之前的程序里,有个非常致命的BUG,就是对一个socket连续点击两次会导致socket连接自己,最终导致程序崩溃修复这个BUG很简单只需要在

2021-07-15 15:37:56 633 2

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(13)——框选与多选

导航目标按住shift键可以进行多选在背景上按住左键可以框选shift+框选也能实现多选接力实现将setStyleSheet功能从NODE移动到主页增加shift多选功能显示BUG修复目标按住shift键可以进行多选在背景上按住左键可以框选shift+框选也能实现多选接力实现将setStyleSheet功能从NODE移动到主页为了方便view里面的控件样式设计,需要将NODE移动到main程序里执行class NodeEditWind(QMainWindow,Ui_MainWindow

2021-07-14 23:03:57 1110

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(12)——如何创建可拖拽式连线

导航目标实现增加删除Edge获取通过socket获取对应的edge抓取第一个点抓取过程连线动画点击或拖拽到第二个点结果目标完成各节点间的连线实现由于涉及到要创建新的edge和删除edge,那么就得编写与之相关的代码。增加删除Edge这就需要调用node_scene.py里面的方法,来实现edge的增加和删除,于是需要在node_edge.py里添加如下代码self.scene.addEdge(self)获取通过socket获取对应的edge首先就需要让Item_socket中有s

2021-07-11 20:55:33 1296

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(11)——如何创建可拖拽式连线

导航目标实现实现途径鼠标左键拖拽socket到另外一个socket上完成连线鼠标左键点击第一个节点,再点击第二个节点,完成连线鼠标点击第一个节点,或者拖拽第一个节点,之后点击任意处取消连线如何识别点击到的是socket两种模式鼠标左键按下的事件函数目标使程序能够准确识别以下三个动作鼠标左键拖拽socket到另外一个socket上完成连线鼠标左键点击第一个节点,再点击第二个节点,完成连线鼠标点击第一个节点,或者拖拽第一个节点,之后点击任意处取消连线实现实现途径由于要在View中进行操作,所

2021-07-10 18:33:41 1046 1

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(10)——完成Edge放置,并且增加socket样式

导航目标Edge能够完全跟着Node走,并且socket有多种样式或者说种类实现使Edge跟着socket走,也就是跟着Node走多样式socket考试周,暂时不更目标Edge能够完全跟着Node走,并且socket有多种样式或者说种类其中不同颜色的socket就是不同样式的socket,用Node(scene, title=“Undefined Node”, inputs=[], outputs=[])中的inputs和outputs表示实现使Edge跟着socket走,也就是跟着No

2021-06-27 21:52:25 1190 2

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(9)——放置Edge(二)

导航目标使线连接到对应socket上实现为edge添加删除功能更新edge头和尾的坐标位置目标使线连接到对应socket上实现为edge添加删除功能连接线的改动在以后的程序编写里肯定是功能最多以及最复杂的,所以提前增加edge的删除功能首先在node_socket内添加新属性self.edge = None,来确定该socket是否进行连接并且增加两个新方法 def getSocketPosition(self): return self.node.getSocket

2021-06-27 20:07:23 744 1

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(8)——放置Edge(一)

导航目标实现Main程序改动node_node改动建立Edge类建立Edge目标绘制出直线和贝塞尔曲线的连接线,并且连接线会有选择反馈实现Main程序改动将所有的添加Item的调用都交给方法addNode处理 def addNode(self): node1 = Node(self.scene,"这是一个节点",inputs = [1,2,3],outputs = [1]) node2 = Node(self.scene, "这是第二个节点", inp

2021-06-27 15:13:37 1020 2

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(7)——写个socket(插口)

导航目标实现定义节点(改动)定义Socket类绘制socket声明socket放置socket目标在声明一个Node的时候,可以指定有几个输入socket和几个输出socket实现定义节点(改动)node = Node(self.scene,"这是一个节点",inputs = [1,2,3],outputs = [1])引入新的输入参数来指定socket的数目每个socket都是一个Socket类定义Socket类node_socket.pyfrom node_graphics_

2021-06-26 21:02:53 1061 3

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(6)——为节点添加内容,以及Styles

导航为NODE里添加widget自定义一个widget将widget添加到node里面QSS美化导入QSS文件编辑QSS文件最终效果为了方便向node里添加控件,我们需要向node里添加widget,也就是content为NODE里添加widget自定义一个widgetfrom PyQt5.QtWidgets import *class QDMNodeContentWidget(QWidget): def __init__(self, parent=None): sup

2021-06-26 18:45:56 1002 1

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(5)——来制作第一个节点吧

111

2021-06-26 14:50:37 1838 4

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(4)——结构规划,建设场景

导航接下来应该做什么QT结构与节点编辑器Node编辑器需要的功能对于代码上的改动自定义Scene尺寸定义专门的node方法运行上的逻辑更改当前各文件代码接下来应该做什么QT结构与节点编辑器图片来源于原作者的教程首先来讲这张图的左边,左边为QT里关于Graphics View的框架中各类的关系,这与我们即将设计的节点编辑器有关Item是设置在Scene中的Scene想要显示出来,需要借助View最后View是一个Widget,可以放在QT的界面里这是一条分界线———————————————

2021-06-23 22:36:31 2597 3

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(3)——拖拽场景和缩放场景

导航拖拽实现中键拖拽思路重写鼠标按下和放开的函数中键按下缩放缩放功能需求定义缩放参数重写滚轮事件函数设置以鼠标为中心缩放拖拽实现中键拖拽思路我的目标是实现按下鼠标中间实现拖拽,当鼠标中键按下即可拖拽,中键松开回归正常,效果如下图由于要实现拖拽功能,那么我就需要对鼠标的按下和释放的事件做出处理,于是我需要对:def mousePressEvent(self, event): passdef mouseReleaseEvent(self, event): pass这两个函数进行重写,来

2021-06-23 20:45:15 1238

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(2)——为场景中添加一些物品吧

1.QGraphicsItem介绍QGraphicsItem 类是 QGraphicsScene 中所有 item 的基类。它提供了一个轻量级的基础,用于编写自定义 item。其中包括:定义 item 的几何形状、碰撞检测、绘制实现、以及通过其事件处理程序进行 item 的交互,QGraphicsItem 是 Qt之图形视图框架 的一部分。Qt 已经为我们提供了一组常见 item。它们是:List itemQGraphicsSimpleTextItem:提供了一个简单的文本标签项QGra

2021-06-20 18:49:04 1585 1

原创 [PyQt5-Node-Editor][基础篇]从零开始使用Pyqt5制作节点编辑器(1)——绘制网格背景

前排提醒看本系列内容需要你对QGraphicsView和QGraphicsScene和QGraphicsItem有一定了解没了解可以看下别的博主博客或者官方文档了解一下在这里我就简单的打个比方QGraphicsScene:盒子以及盒子里的内容QGraphicsView:展示盒子内容的方式(各种滤镜,通过它可以将Scene显示到layout)QGraphicsItem:盒子里的物品(塞到盒子里去)1.建立一个Scene为了拥有更直观的显示效果,我打算将Scene设置为一个网格背景的Scene,

2021-06-20 17:53:53 3343 3

原创 [PyQt5-Node-Editor][前言]从零开始使用Pyqt5制作节点编辑器(0)

0x01 为什么要做这个系列1. 导师布置任务的学习笔记对就是这么简单,不过是导师的任务罢了,一边学习,一边做笔记(学节点编辑器,弄拖拽式编程)2.案例稀缺对于开源节点编辑器的项目目前我就只找到了两个,一个是vue-node-editor,一个是基于pyqt的节点编辑器,这两个项目的作者都没给出完整的接口和文档,于是我决定对后者进行研究和学习,(跟着作者一点一点的码代码)…作者全部课程:https://www.blenderfreak.com/tutorials/node-editor-tutor

2021-06-20 15:56:53 2012 1

原创 [PYQT5]做出精美界面 窗体自定义阴影 Render Shadow--part2[QGraphicsDropShadowEffect]

应用场景做了几次纯色无边框界面的设计后发现,纯色无边框有个很大的问题,就是在白色背景上显示效果不是特别好,遁入白色,无影无踪我想了两个解决方案,一种是加个边框,一种是加个窗体阴影,加边框太丑了,直接pass掉,那么剩下的就是添加阴影,QT内置的添加阴影又由于改了无边框和背景透明,导致阴影不能够显示完全,于是只能另辟蹊径。解决方案(这里widget叫容器,我有时口误把他叫做窗体)查阅网上,添加阴影的方法五花八门,有Qpaint手绘党(代码太复杂),有PS贴图党(将阴影图片贴在边框上)(代码复杂,

2021-02-09 18:09:45 2502 3

原创 arduino + SSD1306OLED模块 + PYTHON OPENCV实现字模转换+实现COM串口通信实时显示

1,前期准备arduino mage2560开发板(随便什么arduino开发板都行)OLED显示屏导线若干2,引脚接线VCC接3.3VGND接GNDSCL接SCLSDA接SDA3,Arduino程序我这块SSD1306模块是128*64分辨率,是0.96英寸,在编程之前需要安装Adafruit_SSD1306和Adafruit_GFX这两个库文件。安装完后可以试试运行官方的示例文件,验证OLED是否接好,记住选择I2C示例程序若不能点亮,试试将此位置的地址改为0x3

2020-06-05 22:55:46 1309 1

原创 反反爬虫 大众点评-图片文字破解 2020年6月6日更新

界面元素审查不得不说,大众点评的反爬虫措施还算可以,但是为了网页加载的运行效率,反爬措施无法做得非常深入,给反反爬虫给了非常大的机会。随便找一个大众点评的评论来进行分析,发现评论的是子字和图片(svgmtsi标签)混合起来的,而且最骚的是,你每次刷新,它都会重新将某些文字换成图片。第一次刷新第二次刷新行不通的解决方案Q:所以,难道解决方案是通过不停的刷新来获取文字最后进行拼接吗(并不是:( )A:一直刷新显得非常玄学,而且程序还不好判断文字是否补全Q:用OCR把图片一个个转换成文

2020-06-02 21:13:33 1835 3

原创 爬虫笔记5 向动态HTML迈进,selenium入门,获取响应后的element代码以及网页COOKIE

1.加载网页代码from selenium import webdriver使用游览器(支撑绝大多数游览器)driver = webdriver.PhantomJS()游览器进行游览driver.get(“http://www.baidu.com”)由于PhantomJS无界面,可以使用下面代码保存界面driver.save_screenshot(“百度.png”)2.定位和操作支持所有element的搜寻比如id(id用的最多)(send_keys是输入,可以用来输入账户密码)d

2020-05-29 16:32:21 509

原创 爬虫笔记4 程序多线程threading与Queue结合使用,Queue用法详细解读

1.Queue的用法通常配合threading使用,创建一个队列,多个线程可以从队列中提取任务,返回输入任务那么具体是怎么配送threading模块使用的呢?举个例子,比如你要下载一个文件,可是你发现对方给你限制了你的下载速度,每个文件只准10kb的下载,这时候你可以将下载文件所有的请求丢到一个队列里面 Queue.put()(假设1000个请求),这个队列就是Queue,然后你设置100个线程,每个线程都可以直接通过Queue.get()来拿到属于自己的任务,最后使用Queue.task_done(

2020-05-11 19:56:04 656 1

原创 爬虫笔记3 XPATH LXML寻找XML,HTML

掌握re库(正则表达式)的用法re.findall("a(.*?)b",”str“)能够返回括号中的内容,括号前后的内容起到定位和过滤的效果原始字符串r,使用r可以忽视反斜杠带来的转义的效果.默认匹配不到\n\s能够匹配空白字符,不仅仅包含空格,还有\t \r \n万能的.*?用法...

2020-05-09 18:58:12 177 1

原创 爬虫练习--豆瓣英美剧爬虫

用chorme(切换为安卓手机)到达豆瓣英美剧页面搜索item得到json文件位置和requests请求url爬虫中设置自己的header(要有referer,不然爬不到)并且删除多余的urlself.url_temp = "https://m.douban.com/rexxar/api/v2/subject_collection/tv_american/items?os=android...

2020-04-30 14:17:11 446

pyqt-node-editor-master.zip

节点编辑器项目,内有计算器实例,原地址https://gitlab.com/pavel.krupala/pyqt-node-editor

2021-08-15

pyqt-node-editor官方文档编译

已经编译好了,不想自己编译的来这里下载,这个文档的内容是全的

2021-08-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除