我正在使用matplotlib生成填充的等高线图,请考虑下面的示例等高线图。我想从这样一个填充的等高线图中读取轮廓值,使用opencv的鼠标交互模块。例如,如果用户将鼠标悬停在此等高线图像上,则应在鼠标移动到图像上时动态显示轮廓值。我已经弄清楚了opencv部分,但我很难将RGB值与实际的数字值联系起来。
我认为在背景中,matplotlib将颜色图(jet、viridis、inferno等)映射到将在等高线图中显示的最小值和最大值,并根据用于显示轮廓数据的等值线数对其进行分段。然后如何访问这些等高线及其RGB值,以便将此映射传递给opencv?

发布于 2022-04-29 20:01:39
我不知道这是否答案,但我认为我没有错。
我已经为我自己的项目实施了等高线和东西,我认为这是相同的情况在所有的项目。为了创建这样的图形,你不能显式地创建曲线,这太难了,我认为几乎不可能。任何算法都不尝试自己创建曲线,而是将空间分割成小方块,在每个小方格中测试值并绘制非常简单的形状。一个著名的算法是行军广场。检查那一页的图纸,你很快就会明白它是如何工作的。
该算法近似于你最终看到的曲线,但由于方格很小,你看不到它们只是近似。这种结构的问题在于它包含了大量的信息,并且它将非常努力地将这些信息保存在某个地方,并从这些数据中得到类似于您想要的曲线的信息。通常的方法是不保留全部内容,而是运行算法并在光栅图像上直接绘制。这要容易得多,而且不会浪费记忆,因为万一有人想要用它做点什么。
我并不是说您使用的库没有提供数据结构,您可以从中获得类似于iso曲线的数据结构,因为我不知道,我只是说我不会提供一些功能,因为它很少使用,而且需要大量的资源。
更进一步说,我认为您需要的不是iso曲线信息,而是一个给定颜色的函数会返回一个值。一个更好的发现转换的地方是缩放对象,而不是图形本身。据我所知,matplotlib提供了一个规模对象。
https://datascience.stackexchange.com/questions/110482
复制相似问题