我決定使用guiqwt作爲我在Python中的主要圖庫,它工作得很好。但是,我錯過了一個等高線圖功能,所以我不得不在我的圖像圖中計算出自己的輪廓。通過使用scikit這非常簡單。現在我有我的情節顯示圖像和輪廓上。 x和y方向上的縮放單位是像素,因爲圖像原始數據是按像素給出的,計算的輪廓也是這樣。qwt/pyqt自定義比例圖像圖(像素到mm的轉換)
我的問題是將像素尺度轉換爲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也許能幫助我:)
的圖像縮放應該保持不變。只有軸應該重新計算爲毫米級,然後當然使用縮放功能時適用。