qwt/pyqt 图像绘图的自定义比例(像素到毫米的转换)
qwt/pyqt custom scale for image plot (pixel to mm conversion)
我决定使用 guiqwt 作为我在 Python 中的主要绘图库,并且效果很好。但是,我缺少等高线图功能,因此我必须在图像图中计算出自己的等高线。使用 scikit 非常容易。现在我的绘图显示了顶部的图像和轮廓。 x 和 y 方向的比例单位是像素,因为图像原始数据是每个像素给出的,计算出的轮廓也是如此。
我的问题是将像素比例转换为e。 G。不缩放图像的毫米比例。我想用代表测量距离的比例尺替换原始比例尺。距离在数组中可用。
在我的第一次尝试中,我尝试通过创建一个新的并使用 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的人都可以帮助我:)
图像缩放应保持不变。仅应将轴重新计算为毫米刻度,然后当然会在使用缩放功能时进行调整。
我使用完全不同的方法解决了这个问题。我使用了 guiqwt 的 xyimage-function。但是,我也必须缩放轮廓。我上次错过了,这就是我发布问题的原因。
我决定使用 guiqwt 作为我在 Python 中的主要绘图库,并且效果很好。但是,我缺少等高线图功能,因此我必须在图像图中计算出自己的等高线。使用 scikit 非常容易。现在我的绘图显示了顶部的图像和轮廓。 x 和 y 方向的比例单位是像素,因为图像原始数据是每个像素给出的,计算出的轮廓也是如此。
我的问题是将像素比例转换为e。 G。不缩放图像的毫米比例。我想用代表测量距离的比例尺替换原始比例尺。距离在数组中可用。
在我的第一次尝试中,我尝试通过创建一个新的并使用 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的人都可以帮助我:)
图像缩放应保持不变。仅应将轴重新计算为毫米刻度,然后当然会在使用缩放功能时进行调整。
我使用完全不同的方法解决了这个问题。我使用了 guiqwt 的 xyimage-function。但是,我也必须缩放轮廓。我上次错过了,这就是我发布问题的原因。