2015-04-12 22 views
0

我決定使用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也許能幫助我:)

的圖像縮放應該保持不變。只有軸應該重新計算爲毫米級,然後當然使用縮放功能時適用。

回答

0

我使用完全不同的方法解決了這個問題。我使用了guiqwt的xyimage函數。但是,我也必須調整輪廓。我錯過了最後一次,這就是爲什麼我發佈這個問題。