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



我决定在Python中使用guiqwt作为我的主绘图库,它运行得很好。然而,我缺少一个轮廓图功能,所以我不得不在我的图像图中计算出我自己的轮廓。使用scikit非常容易。现在我有我的绘图显示图像和轮廓在顶部。x和y方向上的比例单位是像素,因为图像原始数据是按像素给出的,并且计算出的轮廓也是如此。

我的问题是在不缩放图像的情况下将像素比例转换为例如毫米比例。我想用表示测量距离的比例替换原始比例。距离在阵列中可用。

在我的第一次尝试中,我尝试通过创建一个新的AxisScaleDiv并使用QwtPlot::setAxisScaleDiv来更改它。但当图像缩小到新的间隔时,这似乎像缩放功能一样起作用。

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

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的人都可以帮助我:)

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

我使用完全不同的方法解决了这个问题。我使用了guiqwt的xyimage函数。然而,我也不得不缩放我的轮廓。我上次错过了,这就是我发布这个问题的原因。

最新更新