<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[drgraph的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/drgraph</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; drgraph]]></copyright><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 形态操作]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135598952</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135598952</guid><author>drgraph</author><pubDate>Mon, 15 Jan 2024 14:02:45 +0800</pubDate><description><![CDATA[OpenCV作为一个基础的或通用的图像处理，那肯定是需要支持不同的需求，象刚说的这些主体差异，功能也是存在了，只不过采用了相应的所谓专业术语来进行称呼，如梯度、礼帽与黑帽。这些结果可以为主体，但很多地方还想看看边界或轮廓，那就需要在这些主体之间进行差值，或是减法操作，这样，结果就是边缘，就象两个大小不同的同心圆，差值后就得到圆环。从OpenCV图像处理基本知识来看，膨胀腐蚀操作后，还有形态操作，如开运算、闭运算、梯度、礼帽与黑帽，感觉很多，其实，本质上就是批处理操作，如。如，梯度 = 膨胀 - 腐蚀。]]></description><category></category></item><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 边界填充]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135553928</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135553928</guid><author>drgraph</author><pubDate>Fri, 12 Jan 2024 16:07:36 +0800</pubDate><description><![CDATA[这里的核心就是理解borderType，具体就是。今天简单来看一下OpenCV中的边界填充。OpenCV 4 功能 - 边界填充。其实不用记，实验一下就了解。]]></description><category></category></item><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 直方图]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135431545</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135431545</guid><author>drgraph</author><pubDate>Sat, 06 Jan 2024 20:44:20 +0800</pubDate><description><![CDATA[OpenCV直方图是一种可以对整幅图的灰度分布进行整体了解的图示。它是带有像素值（从0到255，不总是）的图在X轴上，在y轴上的图像对应的像素个数。通过观察图像的直方图，我们可以直观的了解图像的对比度、亮度、亮度分布等。在直方图中，横坐标表示图像中各个像素点的灰度级，纵坐标表示具有该灰度级的像素个数。直方图的左边部分显示了图像中较暗像素的数量，右边区域显示了更明亮的像素。直方图是非常常用的图像处理方法，有时在很多图像预处理中能起到特别好的效果。]]></description><category></category></item><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 膨胀腐蚀]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135379856</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135379856</guid><author>drgraph</author><pubDate>Thu, 04 Jan 2024 10:27:40 +0800</pubDate><description><![CDATA[这个概念对于没太多理论支持的程序员来说，术语太多，可以简单理解就是，膨胀与腐蚀是相对于白色区域而言的。如果膨胀，白色区域就象面团发酵一样会胀大，但空间就那么大，可能两个面团就会挨上合并成一个面团了。如果腐蚀，就象拉面，原来一根面条，可能就断成两根，当然断的地方肯定是从细处断。原理很简单，代码也很简单，膨胀与腐蚀分别对应两个函数：dilate与erode，这两个函数的参数都一样。这些处理有些是概念上的，有些是原理上的，也有形态上的，那就看用途与目的了。在二值图的结果基础上，可针对性处理。]]></description><category></category></item><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 颜色变幻]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135354323</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135354323</guid><author>drgraph</author><pubDate>Wed, 03 Jan 2024 09:17:06 +0800</pubDate><description><![CDATA[二值化是逐像素处理，而逐像素处理会有很多效果，这主要是给人眼看的，因为像素值的变化，直观的就是图像变化，比如颜色。]]></description><category></category></item><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 二值化]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135351202</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135351202</guid><author>drgraph</author><pubDate>Tue, 02 Jan 2024 23:03:33 +0800</pubDate><description><![CDATA[二值化，也就是处理结果为0或1，当然是针对图像的各像素而言的1或0，对应于有无，也就是留下有用的，删除无用的，有用的部分，就是关心的部分在图像处理中，也不仅仅只是1或0，因为这两个值看起来都是黑的，人眼很难分辨清楚，那就放大一些，255或0，黑白就出来了目标识别、图像分割、目标提取等后续应用，很多会基于二值化的结果。所以图像分析的二值化处理是一个重要环节。]]></description><category></category></item><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 阈值]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135324362</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135324362</guid><author>drgraph</author><pubDate>Mon, 01 Jan 2024 14:05:36 +0800</pubDate><description><![CDATA[参数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。]]></description><category></category></item><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 单通道图]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135313768</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135313768</guid><author>drgraph</author><pubDate>Sun, 31 Dec 2023 10:43:46 +0800</pubDate><description><![CDATA[在OpenCV中，Mat类的channels实际上和每个元素上存储的数据有关，例如存储的是Point3f，channel就自动为3。具体来说，图像是由一个个像素点堆积而成的，而一个像素点，又是由RGB颜色混合而成的。从数学的角度来看，结果都是 f(R, G, B, A)，单通道是R/G/B/A中的一个，灰度是其余逻辑，如0.299×R+0.587G+0.114B。当然，对编程来说，光知道通道数是多少，并没有什么大用，应该要取得某个通道的图像才是目的，这也是各图像的内在本质。这里的通道就是channels。]]></description><category></category></item><item><title><![CDATA[DrGraph原理示教 - OpenCV 4 功能 - 颜色空间]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/135304651</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/135304651</guid><author>drgraph</author><pubDate>Sat, 30 Dec 2023 15:14:35 +0800</pubDate><description><![CDATA[前段时间，甲方提出明确需求，让把软件国产化。稍微研究了一下，那就转QT开发，顺便把以前的功能代码重写一遍。至于在Ubuntu下折腾QT、OpenCV安装事宜，网上文章很多，照猫画虎即可。QT 6支持C++ 17，里面很多C++的新功能，用起来更为舒爽。QT Creator中，代码提示更快捷，代码折叠也很准确QT Creator中，文档生成更方便，配合Doxygen之后，自己都感觉更专业了当然，更让我高兴的是，QT直接支持最新版的OpenCV，以前还一直停留在2.3版。]]></description><category></category></item><item><title><![CDATA[Godot 4 应用 - 图形绘制]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/132188275</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/132188275</guid><author>drgraph</author><pubDate>Wed, 09 Aug 2023 14:54:27 +0800</pubDate><description><![CDATA[花了两天时间，做了一个初步的图形软件效果，先占个坑，以后再叙。]]></description><category></category></item><item><title><![CDATA[Godot 4 源码分析 - 文件读入编码处理]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/132155231</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/132155231</guid><author>drgraph</author><pubDate>Mon, 07 Aug 2023 21:52:54 +0800</pubDate><description><![CDATA[今天需要读入xml文件进行处理，结果读入一个带中文的文件时，出错了。当然程序还能运行，但编译器一直报错，而且XML解析也不正确。回头看了一下，原目标文件为GB2312编码。而Godot的FileAccess不支持别的编码。其实已经读入到w里，但String::parse_utf8出错。XML文本内容解析为图形效果。]]></description><category></category></item><item><title><![CDATA[Godot 4 练习 - 制作粒子]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/132117547</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/132117547</guid><author>drgraph</author><pubDate>Sat, 05 Aug 2023 13:04:30 +0800</pubDate><description><![CDATA[演示项目dodge_the_creeps中，有一个Trail，具体运行效果想要看看咋实现的，看完也不清晰，感觉是要设置某些关键的属性texturesizespeedamountpixel_sizedraw_orderlifetimeoffsetblend_modegravity唉，ChatGPT也没啥用哈，有些属性是有的，用些属性是没有的，真真假假，费劲。还是在B站找找有没有教程。找到一个这个教程有点意思，不说话，放点背景音乐加一些步骤文字说明，我试了下，还有效果。记录一下。]]></description><category></category></item><item><title><![CDATA[Godot 4 源码分析 - Path2D与PathFollow2D]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/132116041</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/132116041</guid><author>drgraph</author><pubDate>Sat, 05 Aug 2023 10:23:30 +0800</pubDate><description><![CDATA[因为路径是有长度的，本例中为2400，randi()值将按2400取模得到最终的随机值0 - 2399，当然也可以归一化，设置其progress_ratio值为0.0 - 1.0，意思一样。从PathFollow2D代码来看，它派生于Node2D，所以具备transform属性：Position、Rotation、Scale、Skew，对于路径上的点使用而言，这些信息就足够了，能够确定这些点的位置、方向，其实就是一个矢量。查看源码，set_progress的逻辑不只是取模，还有限制范围。]]></description><category></category></item><item><title><![CDATA[Godot 4 源码分析 - 碰撞]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/132100947</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/132100947</guid><author>drgraph</author><pubDate>Fri, 04 Aug 2023 12:46:51 +0800</pubDate><description><![CDATA[在真实场景中，A、B都占据相应的空间位置(3D)或平面位置(2D)，在运行过程中，A、B至少有一个能动，它们的相对位置可能会变化，在某个时刻会有交叠。具体而言，一个节点的Layer值必须包含在另一个节点的Mask值中，同时另一个节点的Layer值必须包含在该节点的Mask值中。Layer与Mask应该都是32位整数，对象A有Layer与Mask属性，对象B也有Layer与Mask属性。对于敌人对象之间，可将它们分配到相同的碰撞图层并设置相应的碰撞掩码，以确保它们不会互相碰撞。果然，与猜测的一致。]]></description><category></category></item><item><title><![CDATA[Godot 4 源码分析 - 增加格式化字符串功能]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/132080673</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/132080673</guid><author>drgraph</author><pubDate>Thu, 03 Aug 2023 12:34:37 +0800</pubDate><description><![CDATA[这个过程中发现一个小问题：std::string没法直接转成String，String类提供了一堆构造函数，但就是没有std::string。Godot 4的主要字符串类型为String，已经设计得比较完善了，但有一个问题，格式化这块没怎么考虑。比如，要将Variant 转为 std::string，直接一路火花带闪电。不过fmt的使用方式是{}，有点新鲜，貌似与C++ 20兼容，那就先用上。String中有一个format函数，但这个函数只有两个参数，这咋用？顺便再在网上转下，发现fmt库的评价不错。]]></description><category></category></item><item><title><![CDATA[Godot 4 源码分析 - 动态导入图片文件]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/132003507</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/132003507</guid><author>drgraph</author><pubDate>Sun, 30 Jul 2023 09:54:20 +0800</pubDate><description><![CDATA[用Godot 4尝试编一个电子书软件，初步效果已经出来，并且通过管道通信接口可以获取、设置属性、调用函数，貌似能处理各种事宜了。其实不然，外因通过内因起作用，如果没把里面搞明白，功能没有开放出来，则有些需求就不能实现。比如，现在想动态加载新的图书，这就是一个实际需求。如果每一本电子书，都需要导出一次，那这个软件就太不通用了。直接加载另一图片，结果不成功这就得研究一下了。]]></description><category></category></item><item><title><![CDATA[Godot 4 插件 - Utility AI 研究]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/131991269</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/131991269</guid><author>drgraph</author><pubDate>Sat, 29 Jul 2023 11:47:52 +0800</pubDate><description><![CDATA[今天看到一个视频教学就看了一下。吸引我的不是插件，是AI这两个字母。这AI与Godot怎么结合？感觉还是离线使用，值得一看。视频时间不长，15分钟左右，看得我云山雾罩，不过演示项目能直接下载（下载下来，能运行，是个小游戏，不过逻辑没大看明白，可能以后看明白后会觉得很简单，但初接触，里面的弯弯绕那么多，一时不好理。看介绍里还有一个插件自带Demo()，感觉会简单一些。下载打开一看，果然简单很多。]]></description><category></category></item><item><title><![CDATA[Godot 4 源码分析 - 获取脚本]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/131919983</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/131919983</guid><author>drgraph</author><pubDate>Tue, 25 Jul 2023 16:22:34 +0800</pubDate><description><![CDATA[继续测试自定义结构发送Book.script.TAutoTurn，结果返回为对象： <GDScript#-9223372010833313372>279. 16:18:07:517 > 【主线程】 > [Pipe.发送] > 发送数据中内容[DrGraph.87: Request - wait 1000 ms]:[int]类型 > 值 = 2[UnicodeString]类型 > 值 = Book.script[UnicodeString]类型 > 值 = TAutoTurn。]]></description><category></category></item><item><title><![CDATA[Godot 4 着色器 - Shader调试]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/131673096</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/131673096</guid><author>drgraph</author><pubDate>Mon, 24 Jul 2023 20:38:16 +0800</pubDate><description><![CDATA[我之前用OpenCV进行图像相关处理，觉得已经很不错，结合GDI可以实现流畅的动画效果直到近来用Shader后才发现，着色器更上一层楼，原来这是入了GPU的坑Shader编程限制很多，各种不支持，看在它性能不错功能炫酷的份上，忍了，努力增加一些自己需要的功能最优先的功能是调试需要，Shader的过程信息也不能输出到文本日志中，也不能输出到调试窗口中。查了一下，一般的做法就是在画面中用一些颜色表示。这应该是比较低效的了。琢磨了一下，调试信息还是只能在画面上显示，不过信息最好能以图形、文字等形式展现。]]></description><category></category></item><item><title><![CDATA[Godot 4 源码分析 - 获取属性信息]]></title><link>https://blog.youkuaiyun.com/drgraph/article/details/131894146</link><guid>https://blog.youkuaiyun.com/drgraph/article/details/131894146</guid><author>drgraph</author><pubDate>Mon, 24 Jul 2023 13:23:56 +0800</pubDate><description><![CDATA[在管道通信基础上，可进行宿主程序与Godot的双向通信。先拿属性信息试试手。]]></description><category></category></item></channel></rss>