小编aze*_*r89的帖子

什么库可用于将位图转换为矢量?

我当前的项目与位图到矢量有关.到目前为止我找到了这些库:

potrace

  • (+)非常适合线跟踪
  • (+)文件
  • ( - )不支持图像渐变

ardeco

  • (+)支持olor渐变
  • (+)文件
  • ( - )线追踪与potrace相比较差
  • ( - )过时(2006年)

rastertovector

  • (+)支持颜色渐变
  • ( - )小文档
  • ( - )线追踪与potrace相比较差
  • ( - )有点过时(2008)

该项目将用于矢量化卡通形象(漫画或卡通,特别是).我的主要目标是矢量化黑白图像.所以potrace给了我足够的结果,但我想处理渐变,例如,逐渐从黑色到白色.

到目前为止,很难找到支持颜色渐变的库.Ardeco和rastertovector支持颜色渐变,但它们有点过时了.我想知道是否有任何维护良好(当然,文档齐全)的矢量追踪库

谢谢!

c++ graphics image-processing vector-graphics bitmapimage

12
推荐指数
1
解决办法
7327
查看次数

如何确定线条的宽度?

我需要检测这些线的宽度:

在此输入图像描述

这些线是平行的并且有一些噪音.

目前,我所做的是:

1.使用减薄找到中心(张颂)

ZhanSuenThinning(binImage, thin);
Run Code Online (Sandbox Code Playgroud)

2.计算距离变换

cv::distanceTransform(binImage, distImg, CV_DIST_L2, CV_DIST_MASK_5);
Run Code Online (Sandbox Code Playgroud)

3.累积中心周围的一半距离

double halfWidth = 0.0;
int count = 0;
for(int a = 0; a < thinImg.cols; a++)
    for(int b = 0; b < thinImg.rows; b++)
        if(thinImg.ptr<uchar>(b, a)[0] > 0)
        {
            halfWidth += distImg.ptr<float>(b, a)[0];
            count ++;
        }
Run Code Online (Sandbox Code Playgroud)

4.最后,获得实际宽度

width = halfWidth / count * 2;
Run Code Online (Sandbox Code Playgroud)

结果,不太好,在1-2像素左右是错误的.在更大的图像上,结果更糟,有什么建议吗?

opencv image-processing computer-vision

6
推荐指数
3
解决办法
5932
查看次数

如何解决Blinn/Loop分辨率无关曲线渲染中的渲染伪影?

在实现 Blinn/Loop 的曲线渲染算法时,我意识到 Loop Curve Type 有一个特殊情况。正如他们的论文(第 4.4 小节,第 6-7 页)中所述,他们说曲线应该分为两部分,但我真的很困惑如何获得交点。

这是我的渲染结果: 在此输入图像描述

正如本文所述,当 或td/sd位于te/se值 [0, 1] 之间时,就会出现此伪影。

我的源代码:

    ...

case CURVE_TYPE_LOOP:

    td = d2 + sqrt(4.0 * d1 * d3 - 3.0 * d2 *d2);
    sd = 2.0 * d1;

    te = d2 - sqrt(4.0 * d1 * d3 - 3.0 * d2 * d2);
    se = 2.0 * d1;

    if((td / sd > 0.0 && td/ sd < 1.0) || (te / se …
Run Code Online (Sandbox Code Playgroud)

c++ opengl graphics shader bezier

4
推荐指数
1
解决办法
1382
查看次数

如何确定一个点是否在2d网格内(CGAL)?

我正在使用CGAL进行几何处理.在进行delaunay三角测量后,我需要检查2D网格内部或外部的点:

在此输入图像描述

graphics geometry cgal

2
推荐指数
1
解决办法
817
查看次数

在github ace编辑器上的插入位置

我正在开发一个chrome扩展,我可以在github web编辑器中插入文本.插入的文本应该在插入符号位置,我无法弄清楚如何获取它.

在此输入图像描述

github编辑器是一个ace编辑器,它有以下HTML代码:

<div class="commit-create">
<textarea id="blob_contents"
      class="file-editor-textarea js-blob-contents js-code-textarea"
      rows="35" name="value"
      data-filename="README.md"
      data-language="Markdown"
      data-ace-mode="markdown"
      data-allow-unchanged=""
      data-test-id="blob-file-editor"
      placeholder="Enter file contents here"
      spellcheck="false"
      autofocus>
Line 1
Line 2
Line 3
Line 4
</textarea>
</div>
Run Code Online (Sandbox Code Playgroud)

在我的manifest.json中,我包含了ace.js(从这里获得,我希望它是正确的.js文件)

...    
"content_scripts": 
      [{
        "matches": ["*://*.github.com/*/edit/*"],
        "js":      ["ace.js", "content.js"]
      }],
...
Run Code Online (Sandbox Code Playgroud)

这是用户提供的javascript代码:

chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) 
{
    ...
    var editor = document.querySelector(".ace_editor").env.editor;
    var cursor = editor.selection.getCursor() // returns object like {row:1 , column: 4}
    editor.insert("text") // insert string at cursor
    ...
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

Error in event …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension ace-editor

2
推荐指数
1
解决办法
2670
查看次数

如何查询所有位于aline的点

假设我有一组积分,

在此输入图像描述

然后我定义了行L.如何获得b,d和f?

在此输入图像描述

这可以用kd-tree解决(略有修改)?

== ==编辑

我的程序如何工作:

  1. 定义一组点
  2. L后面定义,它与点集无关

我现在唯一的想法:

  1. 获得L线的中间点m
  2. 基于点m,使用KD-Tree获取长度(L)/ 2半径内的所有点
  3. 对于每个点,测试它是否位于L行
  4. 如果某些点稍微位于查询行上,我可能会添加共线阈值.

我的方法的运行时间取决于L长度,线越长,查询越大,需要检查的点数越多.

algorithm geometry

1
推荐指数
1
解决办法
109
查看次数