2015-04-12 7 views
0

Я решил использовать guiqwt как свою основную библиотеку в Python, и это работает очень хорошо. Тем не менее, у меня отсутствует функция контурного графика, поэтому мне пришлось разрабатывать собственные контуры в моих графических сюжетах. Это было довольно легко, используя scikit. Теперь у меня есть мой сюжет, показывающий изображение и контуры сверху. Масштабный блок в направлениях x и y является пикселем, поскольку необработанные данные изображения задаются на пиксель и рассчитанные контуры.Индивидуальный масштаб qwt/pyqt для изображения (преобразование пикселя в мм)

Моя проблема заключается в преобразовании пиксельной шкалы в e. г. мм без масштабирования изображения. Я хочу заменить исходную шкалу шкалой, которая представляет измеренные расстояния. Расстояния доступны в массиве.

С моей первой попытки я попытался изменить AxisScaleDivision, создав новую и используя 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 может быть в состоянии помочь мне :)

В увеличение изображения должно оставаться неизменным. Только ось должна быть пересчитана в мм-масштабе, а затем, конечно, адаптирована, когда используется функция масштабирования.

ответ

0

Я решил проблему, используя совершенно другой подход. Я использовал функцию xyimage guiqwt. Тем не менее, мне пришлось также масштабировать контуры. Я пропустил это в последний раз, поэтому я разместил вопрос.