自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 DrGraph原理示教 - OpenCV 4 功能 - 形态操作

OpenCV作为一个基础的或通用的图像处理,那肯定是需要支持不同的需求,象刚说的这些主体差异,功能也是存在了,只不过采用了相应的所谓专业术语来进行称呼,如梯度、礼帽与黑帽。这些结果可以为主体,但很多地方还想看看边界或轮廓,那就需要在这些主体之间进行差值,或是减法操作,这样,结果就是边缘,就象两个大小不同的同心圆,差值后就得到圆环。从OpenCV图像处理基本知识来看,膨胀腐蚀操作后,还有形态操作,如开运算、闭运算、梯度、礼帽与黑帽,感觉很多,其实,本质上就是批处理操作,如。如,梯度 = 膨胀 - 腐蚀。

2024-01-15 14:02:45 484

原创 DrGraph原理示教 - OpenCV 4 功能 - 边界填充

这里的核心就是理解borderType,具体就是。今天简单来看一下OpenCV中的边界填充。OpenCV 4 功能 - 边界填充。其实不用记,实验一下就了解。

2024-01-12 16:07:36 515

原创 DrGraph原理示教 - OpenCV 4 功能 - 直方图

OpenCV直方图是一种可以对整幅图的灰度分布进行整体了解的图示。它是带有像素值(从0到255,不总是)的图在X轴上,在y轴上的图像对应的像素个数。通过观察图像的直方图,我们可以直观的了解图像的对比度、亮度、亮度分布等。在直方图中,横坐标表示图像中各个像素点的灰度级,纵坐标表示具有该灰度级的像素个数。直方图的左边部分显示了图像中较暗像素的数量,右边区域显示了更明亮的像素。直方图是非常常用的图像处理方法,有时在很多图像预处理中能起到特别好的效果。

2024-01-06 20:44:20 1187 1

原创 DrGraph原理示教 - OpenCV 4 功能 - 膨胀腐蚀

这个概念对于没太多理论支持的程序员来说,术语太多,可以简单理解就是,膨胀与腐蚀是相对于白色区域而言的。如果膨胀,白色区域就象面团发酵一样会胀大,但空间就那么大,可能两个面团就会挨上合并成一个面团了。如果腐蚀,就象拉面,原来一根面条,可能就断成两根,当然断的地方肯定是从细处断。原理很简单,代码也很简单,膨胀与腐蚀分别对应两个函数:dilate与erode,这两个函数的参数都一样。这些处理有些是概念上的,有些是原理上的,也有形态上的,那就看用途与目的了。在二值图的结果基础上,可针对性处理。

2024-01-04 10:27:40 471

原创 DrGraph原理示教 - OpenCV 4 功能 - 颜色变幻

二值化是逐像素处理,而逐像素处理会有很多效果,这主要是给人眼看的,因为像素值的变化,直观的就是图像变化,比如颜色。

2024-01-03 09:17:06 517

原创 DrGraph原理示教 - OpenCV 4 功能 - 二值化

二值化,也就是处理结果为0或1,当然是针对图像的各像素而言的1或0,对应于有无,也就是留下有用的,删除无用的,有用的部分,就是关心的部分在图像处理中,也不仅仅只是1或0,因为这两个值看起来都是黑的,人眼很难分辨清楚,那就放大一些,255或0,黑白就出来了目标识别、图像分割、目标提取等后续应用,很多会基于二值化的结果。所以图像分析的二值化处理是一个重要环节。

2024-01-02 23:03:33 617

原创 DrGraph原理示教 - OpenCV 4 功能 - 阈值

参数4:阈值的方式,主要有5种,分别为cv.THRESH_BINARY、cv.THRESH_BINARY_INV、cv.THRESH_TRUNC、cv.THRESH_TOZERO、cv.THRESH_TOZERO_INV。有时间看下源码就可以不用猜测了。二进制阈值化:选择一个特定的阈值量,大于该阈值的像素点的灰度值设定为最大值(如8位灰度值最大为255),小于该阈值的像素点的灰度值设定为0。反阈值化为0:与阈值化为0类似,只是像素点的灰度值大于该阈值的不进行任何改变,而小于该阈值的,其灰度值全部变为0。

2024-01-01 14:05:36 1314

原创 DrGraph原理示教 - OpenCV 4 功能 - 单通道图

在OpenCV中,Mat类的channels实际上和每个元素上存储的数据有关,例如存储的是Point3f,channel就自动为3。具体来说,图像是由一个个像素点堆积而成的,而一个像素点,又是由RGB颜色混合而成的。从数学的角度来看,结果都是 f(R, G, B, A),单通道是R/G/B/A中的一个,灰度是其余逻辑,如0.299×R+0.587G+0.114B。当然,对编程来说,光知道通道数是多少,并没有什么大用,应该要取得某个通道的图像才是目的,这也是各图像的内在本质。这里的通道就是channels。

2023-12-31 10:43:46 495

原创 DrGraph原理示教 - OpenCV 4 功能 - 颜色空间

前段时间,甲方提出明确需求,让把软件国产化。稍微研究了一下,那就转QT开发,顺便把以前的功能代码重写一遍。至于在Ubuntu下折腾QT、OpenCV安装事宜,网上文章很多,照猫画虎即可。QT 6支持C++ 17,里面很多C++的新功能,用起来更为舒爽。QT Creator中,代码提示更快捷,代码折叠也很准确QT Creator中,文档生成更方便,配合Doxygen之后,自己都感觉更专业了当然,更让我高兴的是,QT直接支持最新版的OpenCV,以前还一直停留在2.3版。

2023-12-30 15:14:35 1237

原创 Godot 4 应用 - 图形绘制

花了两天时间,做了一个初步的图形软件效果,先占个坑,以后再叙。

2023-08-09 14:54:27 374

原创 Godot 4 源码分析 - 文件读入编码处理

今天需要读入xml文件进行处理,结果读入一个带中文的文件时,出错了。当然程序还能运行,但编译器一直报错,而且XML解析也不正确。回头看了一下,原目标文件为GB2312编码。而Godot的FileAccess不支持别的编码。其实已经读入到w里,但String::parse_utf8出错。XML文本内容解析为图形效果。

2023-08-07 21:52:54 1142

原创 Godot 4 练习 - 制作粒子

演示项目dodge_the_creeps中,有一个Trail,具体运行效果想要看看咋实现的,看完也不清晰,感觉是要设置某些关键的属性texturesizespeedamountpixel_sizedraw_orderlifetimeoffsetblend_modegravity唉,ChatGPT也没啥用哈,有些属性是有的,用些属性是没有的,真真假假,费劲。还是在B站找找有没有教程。找到一个这个教程有点意思,不说话,放点背景音乐加一些步骤文字说明,我试了下,还有效果。记录一下。

2023-08-05 13:04:30 1178

原创 Godot 4 源码分析 - Path2D与PathFollow2D

因为路径是有长度的,本例中为2400,randi()值将按2400取模得到最终的随机值0 - 2399,当然也可以归一化,设置其progress_ratio值为0.0 - 1.0,意思一样。从PathFollow2D代码来看,它派生于Node2D,所以具备transform属性:Position、Rotation、Scale、Skew,对于路径上的点使用而言,这些信息就足够了,能够确定这些点的位置、方向,其实就是一个矢量。查看源码,set_progress的逻辑不只是取模,还有限制范围。

2023-08-05 10:23:30 1449

原创 Godot 4 源码分析 - 碰撞

在真实场景中,A、B都占据相应的空间位置(3D)或平面位置(2D),在运行过程中,A、B至少有一个能动,它们的相对位置可能会变化,在某个时刻会有交叠。具体而言,一个节点的Layer值必须包含在另一个节点的Mask值中,同时另一个节点的Layer值必须包含在该节点的Mask值中。Layer与Mask应该都是32位整数,对象A有Layer与Mask属性,对象B也有Layer与Mask属性。对于敌人对象之间,可将它们分配到相同的碰撞图层并设置相应的碰撞掩码,以确保它们不会互相碰撞。果然,与猜测的一致。

2023-08-04 12:46:51 2790

原创 Godot 4 源码分析 - 增加格式化字符串功能

这个过程中发现一个小问题:std::string没法直接转成String,String类提供了一堆构造函数,但就是没有std::string。Godot 4的主要字符串类型为String,已经设计得比较完善了,但有一个问题,格式化这块没怎么考虑。比如,要将Variant 转为 std::string,直接一路火花带闪电。不过fmt的使用方式是{},有点新鲜,貌似与C++ 20兼容,那就先用上。String中有一个format函数,但这个函数只有两个参数,这咋用?顺便再在网上转下,发现fmt库的评价不错。

2023-08-03 12:34:37 1001 1

原创 Godot 4 源码分析 - 动态导入图片文件

用Godot 4尝试编一个电子书软件,初步效果已经出来,并且通过管道通信接口可以获取、设置属性、调用函数,貌似能处理各种事宜了。其实不然,外因通过内因起作用,如果没把里面搞明白,功能没有开放出来,则有些需求就不能实现。比如,现在想动态加载新的图书,这就是一个实际需求。如果每一本电子书,都需要导出一次,那这个软件就太不通用了。直接加载另一图片,结果不成功这就得研究一下了。

2023-07-30 09:54:20 1619

原创 Godot 4 插件 - Utility AI 研究

今天看到一个视频教学就看了一下。吸引我的不是插件,是AI这两个字母。这AI与Godot怎么结合?感觉还是离线使用,值得一看。视频时间不长,15分钟左右,看得我云山雾罩,不过演示项目能直接下载(下载下来,能运行,是个小游戏,不过逻辑没大看明白,可能以后看明白后会觉得很简单,但初接触,里面的弯弯绕那么多,一时不好理。看介绍里还有一个插件自带Demo(),感觉会简单一些。下载打开一看,果然简单很多。

2023-07-29 11:47:52 561

原创 Godot 4 源码分析 - 获取脚本

继续测试自定义结构发送Book.script.TAutoTurn,结果返回为对象: <GDScript#-9223372010833313372>279. 16:18:07:517 > 【主线程】 > [Pipe.发送] > 发送数据中内容[DrGraph.87: Request - wait 1000 ms]:[int]类型 > 值 = 2[UnicodeString]类型 > 值 = Book.script[UnicodeString]类型 > 值 = TAutoTurn。

2023-07-25 16:22:34 1095

原创 Godot 4 着色器 - Shader调试

我之前用OpenCV进行图像相关处理,觉得已经很不错,结合GDI可以实现流畅的动画效果直到近来用Shader后才发现,着色器更上一层楼,原来这是入了GPU的坑Shader编程限制很多,各种不支持,看在它性能不错功能炫酷的份上,忍了,努力增加一些自己需要的功能最优先的功能是调试需要,Shader的过程信息也不能输出到文本日志中,也不能输出到调试窗口中。查了一下,一般的做法就是在画面中用一些颜色表示。这应该是比较低效的了。琢磨了一下,调试信息还是只能在画面上显示,不过信息最好能以图形、文字等形式展现。

2023-07-24 20:38:16 1843

原创 Godot 4 源码分析 - 获取属性信息

在管道通信基础上,可进行宿主程序与Godot的双向通信。先拿属性信息试试手。

2023-07-24 13:23:56 830

原创 Godot 4 源码分析 - 增加管道通信

学习研究Godot 4,很爽,虽然很庞杂,但相对于自己的水平来说,很强大,尤其是vulkan这块直接打包可用,省得自己从头琢磨。一点一点地消化、优化与完善,最终才能成为自己的。这段时间就在Godot的基础上,增加管道通信,实现Godot与本机已有程序进行通信,以备后续的无缝集成整合。其实,Godot支持各种网络通信,支持UDP、TCP等。为什么非要实现管道通信,本质上还是想看看改造效果。最终目标是实现Godot软件与自己的DrGraph软件的管道通信。

2023-07-20 10:45:16 1338

原创 Godot引擎 4.0 文档 - 手册 - 2D

¶这是对节点从本地绘制内容到绘制到屏幕上进行的 2D 变换的概述。本概述讨论了引擎的非常底层的细节。¶通常需要将自定义输入事件提供给场景树。有了以上知识,要正确地做到这一点,必须按照以下方式进行:GD脚本C#varvar二维灯光和阴影¶¶默认情况下,Godot 中的 2D 场景是无阴影的,没有可见的灯光和阴影。虽然渲染速度很快,但未着色的场景可能看起来很平淡。Godot 提供了使用实时 2D 光照和阴影的能力,这可以极大地增强项目的深度感。没有 2D 灯光或阴影,场景没有阴影¶启用 2D 灯(无阴影)

2023-06-25 13:44:33 3928

原创 Godot 4 源码分析 - 练手 - 和谐共生

今天看到一个微信视频,和谐共生,大概效果如下研究这么长时间的Godot,今天试试能否实现上述效果粗看一下,这个效果实现分几步:1. 画圆,并确定多个圆的位置规律2. 动点,并确定各动点的运动规律3. 综合调试。

2023-06-24 22:46:50 828

原创 Godot 4 源码分析 - 代码自动补全流程

对于Script编辑器而言,code_complete_func指向ScriptTextEditor::_code_complete_scripts,本质上是调用GDScriptLanguage::complete_code函数。1) CodeTextEditor中创建时钟code_complete_timer,其timeout超时信号绑定_code_complete_timer_timeout函数。而_line_col_changed函数(绑定caret_changed事件)会停止时钟。

2023-06-22 16:15:10 886

原创 Godot 4 源码分析 - 命令行参数

粗看Godot 4的源码,稍微调试一下,发现一大堆的命令行参数。在widechar_main中Main::setup中,各命令行参数加入到List<Stirng> args中,并通过OS::get_singleton()->get_cmdline_platform_args()取得平台相关命令行参数,然后args逐项处理。

2023-06-20 19:26:56 1181

原创 Godot 4 源码分析 - Project Manager

我之前一直用RAD开发Windows程序,哪里还见过这种自己从头搭起来的,比如create_project_item_control处理各工程项。_open_selected_projects_ask,其实最终调用_open_selected_projects。除去界面各控件外,就是加载工程项_load_recent_projects(),直接处理。至于其中的循环,因为在ProjectManager构造函数中,已设置。当然,还有ENTER键会直接调用_open_selected_projects_ask。

2023-06-20 18:22:01 1923 2

原创 Godot引擎 4.0 文档 - 手册 - 最佳实践

¶由于 Godot 对项目结构或文件系统的使用没有限制,因此在学习引擎时组织文件似乎具有挑战性。本教程建议的工作流程应该是一个很好的起点。我们还将介绍如何使用 Godot 进行版本控制。¶Godot 的目标是对 VCS 友好,并生成大部分可读和可合并的文件。Godot 还支持在编辑器中使用版本控制系统。但是,编辑器中的 VCS 需要针对您正在使用的特定 VCS 的插件。可以在Project > Version Control下的编辑器中设置或关闭 VCS。​​。

2023-06-06 13:39:32 3337

原创 Godot 4 源码分析 - 日志输出

使用软件,日志可以提供比较多的运行信息,研究日志也是一种学习。Godot有两种运行模式:带控制台与不带控制台。带控制台的情况下,运行时会打开一个DOS窗口,具体的日志信息就显示在DOS窗口中。但不带控制台,就我目前的了解,这些日志就不知道在哪里显示了。

2023-06-06 13:34:57 1098

原创 Godot 4 源码分析 - 初探

准备研究GoDot 4源码。

2023-06-03 11:22:20 2000

原创 Godot引擎 4.0 文档 - 第一个 3D 游戏

你的第一个 3D 游戏在这个循序渐进的教程系列中,您将使用 Godot 创建您的第一个完整的 3D 游戏。到本系列结束时,您将拥有自己的一个简单但已完成的项目,就像下面的动画 gif 一样。我们将在此处编写的游戏类似于,但有一点不同:您现在可以跳跃,您的目标是压扁小兵。这样,您既可以识别在上一教程中学到的,又可以使用新代码和功能您将学习:使用跳跃机制处理 3D 坐标。使用运动体移动 3D 角色并检测它们何时以及如何发生碰撞。使用物理层和一个组来检测与特定实体的交互。

2023-06-02 11:05:46 2170

原创 Godot引擎 4.0 文档 - 第一个 2D 游戏

如下图所示排列节点。

2023-05-22 20:04:00 2592

原创 Godot引擎 4.0 文档 - 循序渐进教程 - 使用信号

¶注:本节是关于如何定义和使用您自己的信号的参考,而不是建立在之前课程中创建的项目的基础上。您可以在脚本中定义自定义信号。例如,当玩家的生命值达到零时,您想要显示游戏结束屏幕。为此,您可以定义一个名为“死亡”或“健康耗尽”的信号,当它们的健康状况达到 0 时。GDScriptextendsNode2Dsignalvarhealth10注:由于信号代表刚刚发生的事件,我们通常在其名称中使用过去式的动作动词。

2023-05-22 07:45:22 3408 1

原创 Godot引擎 4.0 文档 - 循序渐进教程 - 监听玩家输入

¶总之,Godot 中的每个脚本都代表一个类,并扩展了引擎的一个内置类。您的类继承自的节点类型,使您可以访问基类属性,如sprite 示例中rotationposition属性。您还继承了许多我们在本示例中没有使用的功能。在 GDScript 中,放在文件顶部的变量是类的属性,也称为成员变量。除了变量之外,您还可以定义函数,在大多数情况下,函数将是您的类的方法。Godot 提供了几个你可以定义的虚函数来连接你的类和引擎。其中包括_process(),每帧对节点应用更改,以及。

2023-05-21 20:37:01 1103

原创 Godot引擎 4.0 文档 - 循序渐进教程 - 创建你的第一个脚本

创建你的第一个脚本在本课中,您将编写您的第一个脚本,使用 GDScript 使 Godot 图标转圈。正如我们提到的,我们假设您具有编程基础。为方便起见,等效的 C# 代码已包含在另一个选项卡中。要了解有关 GDScript、其关键字和语法的更多信息,请前往。参考:要了解有关 C# 的更多信息,请访问页面。

2023-05-21 18:49:48 1578

原创 Godot引擎 4.0 文档 - 循序渐进教程 - 脚本语言

¶脚本是包含附加到节点以扩展其功能的代码的文件。Godot 支持四种官方脚本语言,为您提供性能和易用性之间的灵活性。例如,您可以混合使用多种语言,以使用 C 或 C++ 实现要求苛刻的算法,并使用 GDScript 或 C# 编写大部分游戏逻辑。

2023-05-21 18:16:13 3459

原创 Godot引擎 4.0 文档 - 循序渐进教程 - 创建实例

¶实例化,从蓝图生成对象的过程有很多方便的用途。通过场景,它为您提供:将游戏划分为可重用组件的能力。构建和封装复杂系统的工具。一种以自然方式思考游戏项目结构的语言。

2023-05-21 18:08:13 2112

原创 Godot引擎 4.0 文档 - 循序渐进教程 - 节点和场景

节点和场景在中,我们看到 Godot 游戏是一棵场景树,每个场景都是一棵节点树。在本课中,我们将对它们进行更多解释。您还将创建您的第一个场景。

2023-05-21 15:39:03 2278

原创 Godot引擎 4.0 文档 - 入门介绍 - Godot设计理念

Godot设计理念既然你已经了解了,让我们来谈谈 Godot 的设计。它们不仅提供一系列功能,而且每台发动机的设计都是独一无二的。这导致形成游戏结构的不同工作流程和不同方式。这一切都源于他们各自的设计理念。此页面旨在帮助您了解 Godot 的工作原理,从它的一些核心支柱开始。它不是可用功能列表,也不是引擎比较。要了解是否有任何引擎适合您的项目,您需要亲自尝试并了解其设计和局限性。如果您正在寻找引擎功能的概述,请观看。

2023-05-21 15:15:53 1546

原创 Godot引擎 4.0 文档 - 入门介绍 - 学习新功能

学习新功能Godot 是一个功能丰富的游戏引擎。有很多关于它的知识。本页介绍了如何使用在线手册、内置代码参考以及加入在线社区来学习新功能和技术。

2023-05-21 12:20:29 1927

原创 Godot引擎 4.0 文档 - 入门介绍 - Godot 编辑器

Godot的编辑器本页将为您简要介绍 Godot 的界面。我们将查看不同的主屏幕和停靠栏,以帮助您更好了解Godot软件。参考:有关编辑器界面及其使用方法的全面分类,请参阅。

2023-05-21 12:09:18 1616

DrGraph_Update.rar

DrGraph软件,在原理图分析的基础上实现各种业务应用。 使用方法:解压到DrGraph目录下,运行DrGraph_UPdate.exe即可在线更新下载。更新完毕,运行DrGraph.exe即可 需注册后才能使用 详情见https://blog.csdn.net/drgraph/article/details/113933154

2021-02-22

Html5 Canvas.docx

来源于Mozilla网站的HTML5 Canvas教程,便于离线查看。 主要内容:Canvas的基本用法,使用Canvas来绘制图形,使用样式和颜色,绘制文本,使用图像,变形,组合,基本动画,高级动画,像素操作,点击区域和无障碍访问,Canvas的优化。

2020-04-07

空空如也

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

TA关注的人

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