npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

nodegrapher

v0.0.13

Published

Transform images into spatial graph data with Node.js and TypeScript

Downloads

868

Readme

NodeGrapher

NodeGrapher 是一个 TypeScript/Node.js 包,用于将图像转换为空间图数据。该包提供了从图像中提取图结构的工具,适用于网络分析、路径规划和空间数据处理等应用。

安装

npm install nodegrapher

功能

  • 从图像中提取图结构
  • 生成类似道路的图网络
  • 可选的图形可视化
  • 支持 TypeScript
  • 灵活的输出格式

使用

基本用法

import { processImageToGraph, saveRoad, extractGraphFromImage, visualizeGraph } from 'nodegrapher';

// 处理图像并获取完整的图数据(包括障碍物)
const graphData = await processImageToGraph(
  'path/to/image.jpg',
  'output.json',
  1  // maxContainCount: 控制图处理的最大包含计数
);

// 生成并保存道路图(不含障碍物)
const roadGraph = await saveRoad(
  'path/to/image.jpg',  // 相同的输入图像
  'road.json'          // 输出路径(可选,默认为 "road.json")
);

// 从图像中可视化图形
const graph = await extractGraphFromImage('path/to/image.jpg', 10, 1);
await visualizeGraph('path/to/image.jpg', graph, 'visualization.jpg');

Neovim 插件

NodeGrapher 还支持通过 Neovim 插件将 JSON 图数据转换为 ASCII 字符表示。请访问 NodeGrapher.nvim 了解更多信息。

使用示例

在 Neovim 中使用 NodeGrapherToAscii 命令:

NodeGrapher Command

显示的图形窗口:

NodeGrapher Window

功能说明与差异

processImageToGraph

从图像中提取并保存完整的图结构,包括所有节点和障碍物。当需要图像的完整空间数据表示时,此函数非常有用。

saveRoad

生成并保存简化的道路图,专注于可导航路径,同时排除障碍物。这非常适用于仅需要道路网络结构的应用场景,例如路径规划。

功能差异

两者处理相同的输入图像,但根据特定用途生成不同的输出:

  • 完整图(processImageToGraph:包含所有空间数据,包括障碍物。
  • 道路图(saveRoad:仅包含道路网络结构,为导航优化。

extractGraphFromImage

直接从图像中提取图结构,而不保存到文件。当需要进一步处理或分析图结构时,此函数非常有用。


filterRoadNodes

过滤掉由 edges_list 形成的任意多边形内部的新节点。

Before and After Filtering

API 参考

processImageToGraph(imagePath: string, outputPath: string, maxContainCount?: number, numX?: number): Promise<GraphData | undefined>

处理图像以提取图结构并将其保存为 JSON 文件。

  • imagePath: 输入图像文件的路径
  • outputPath: 图数据将保存为 JSON 的路径
  • maxContainCount (可选): 图处理的最大包含值(默认: 0)
  • numX (可选): 在 x 方向生成的节点数(默认: 15)

返回一个 Promise,解析为图数据。

saveRoad(imagePath: string, outputPath?: string, maxContainCount?: number, numX?: number): Promise<GraphData | undefined>

根据提供的图像生成并保存道路图。

  • imagePath: 输入图像文件的路径
  • outputPath (可选): 道路图将保存为 JSON 的路径(默认: "road.json")
  • maxContainCount (可选): 图处理的最大包含值(默认: 0)
  • numX (可选): 在 x 方向生成的节点数(默认: 15)

返回一个 Promise,解析为道路图数据,或在无法生成道路图时解析为 undefined。

extractGraphFromImage(imagePath: string, distanceThreshold?: number, maxContainCount?: number, numX?: number): Promise<GraphData>

直接从图像中提取图结构而不保存到文件。

  • imagePath: 输入图像文件的路径
  • distanceThreshold (可选): 节点连接的距离阈值(默认: 10)
  • maxContainCount (可选): 图处理的最大包含值(默认: 0)
  • numX (可选): 在 x 方向生成的节点数(默认: 15)

返回一个 Promise,解析为图数据。

removeTextFromImage(imagePath: string, outputPath: string): Promise<void>

使用基于 OpenCV 的文本检测从图像中移除文本。

  • imagePath: 输入图像文件的路径
  • outputPath: 处理后的图像将保存的路径
  • 使用自适应阈值和轮廓检测来识别和移除文本区域
  • 用周围的背景颜色填充移除的文本区域

返回一个 Promise,当文本移除完成时解析。

visualizeGraph(imagePath: string, graph: GraphData, outputPath: string): Promise<void>

在图像上可视化图结构。

  • imagePath: 输入图像文件的路径
  • graph: 要可视化的图数据
  • outputPath: 可视化结果将保存的路径

返回一个 Promise,当可视化完成时解析。

类型

GraphData

interface GraphData {
  nodes: Node[];
  lines: Line[];
  nodesList?: Node[][];
}

许可证

MIT 许可证 - 详见 LICENSE 文件

贡献

欢迎贡献!请随时提交 Pull Request。