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

时间:2015-04-12 06:29:22

标签: python plot scale contour qwt

我决定使用guiqwt作为我在Python中的主要情节库,它运作得很好。但是,我缺少一个轮廓图功能,所以我必须在我的图像图中找出自己的轮廓。使用scikit非常容易。现在我的情节显示了图像和顶部的轮廓。 x和y方向上的比例单位是像素,因为每个像素给出图像原始数据以及计算的轮廓。

我的问题是将像素比例转换为e。 G。 mm缩放而不缩放图像。我想用表示测量距离的刻度替换原始刻度。距离以数组形式提供。

在我的第一次尝试中,我尝试通过创建一个新的AxisScaleDivision并使用QwtPlot :: setAxisScaleDiv来更改{{3}}。但这似乎像缩放功能一样,因为图像缩小到新的间隔。

这是一个小例子的代码:

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

图像缩放应保持不变。只应将轴重新计算为mm-scale,然后在使用缩放功能时进行调整。

1 个答案:

答案 0 :(得分:0)

我通过使用完全不同的方法解决了这个问题。我使用了guiqwt的xyimage函数。但是,我也必须缩放我的轮廓。我错过了最后一次,这就是我发布问题的原因。