qwt/pyqt图像绘图的自定义比例(像素到毫米的转换)

2024-04-29 15:40:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我决定使用guiqwt作为Python中的主绘图库,它工作得非常好。但是,我缺少一个等高线图功能,所以我不得不在图像图中计算出我自己的轮廓。使用scikit很容易做到。现在我有了我的图,上面显示了图像和轮廓。在x和y方向上的比例单位是像素,因为图像原始数据是按像素和计算的轮廓给出的。在

我的问题是在不缩放图像的情况下,将像素比例转换为毫米尺度。我想用一个表示测量距离的比例尺来代替原来的刻度。阵列中提供了距离。在

在我的第一次尝试中,我试图通过创建一个新的并使用QwtPlot::setAxisScaleDiv来更改AxisScaleDivision。但是当图像被缩小到新的间隔时,这看起来就像一个缩放函数。在

下面是一个小示例的代码:

from guiqwt.plot import ImageDialog
from guiqwt.builder import make
from skimage import measure
import numpy as np

data = np.random.rand(80,30)

contours = measure.find_contours(data, 0.1)

win = ImageDialog(edit=False, toolbar=True, wintitle="Contrast test", 
    options=dict(show_contrast=True))

img = make.image(data)

plot = win.get_plot()
plot.add_item(img)

for n, contour in enumerate(contours):
    curve = make.curve(contour[:, 1], contour[:, 0], 'k-')
    plot.add_item(curve)

win.show()

scaleEng = plot.axisScaleEngine(2)
scaleDiv = scaleEng.divideScale(20, 30, 5, 5, 0)

plot.setAxisScaleDiv(2, scaleDiv)
plot.replot()

它的语法非常接近qwt,所以我想任何熟悉qwt的人都可以帮助我:)

图像缩放应保持不变。只有轴应该重新计算到毫米刻度,然后,当然,在使用缩放功能时进行调整。在


Tags: from图像import功能datamakeplot像素