gpt4 book ai didi

c# - 以编程方式制定图像轮廓(最好是 C#/C++ 编码,或伪编码)

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:48 31 4
gpt4 key购买 nike

我只想向逻辑上的任何人寻求帮助,以及制定图像轮廓的更好的示例代码。

为了更清楚,我说的是透明图像。比如说,我有一个 PNG 图像,中间有一个多边形,或者更好的是一个岛屿的俯 View 。现在,我想描绘轮廓并在其上设置颜色。就像 Adob​​e Photoshop 中的“描边”效果。

到目前为止,我已经完成了,我已经创建了一个可以追踪轮廓的程序。但我的问题是,它是线性扫描。从左到右,然后向下,然后再从左到右。我相信你明白了。我希望跟踪是流畅的,就像您手动跟踪它一样。喜欢你的 Trace a Circle。

目的是,将其用作精确悬停多边形的触发区域。还有我的问题是,如果有两个岛。

我希望我的问题很清楚。任何建议, sample 表示赞赏。但如果它是 c# 代码形式或带有一些解释的伪代码,那就更好了。

非常感谢。

--添加:

另外,我想(我想我忘了提)按顺序记录笔划的坐标。所以我可以稍后操纵它们。这就是为什么我想以流程方式制作大纲逻辑。这就是我正在寻找的算法。非常感谢!

最佳答案

一种方法是使用通用的边缘检测算法。例如,Sobel edge detection .但是,它并未像下面的示例那样针对干净、抗锯齿的双色图像进行优化,因此它产生的结果有些粗糙。为了更好地保留抗锯齿并获得平滑的结果,我建议使用以下算法:

Image blurredImg = gaussianBlur(sourceImg, blurRadius = desiredOutlineWidth);
const float sharpnessCoef = 0.1; // value may need tuning or may need to
// depend on the blur radius
Image dilatedImg = from blurredImg, map all pixels with
brightness > sharpnessCoef to white and
multiply the rest by 1 / sharpnessCoef
Image smoothResult = subtract sourceImg from dilatedImg

例子:

edge detection

关于c# - 以编程方式制定图像轮廓(最好是 C#/C++ 编码,或伪编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507112/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com