Я решил использовать 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 может быть в состоянии помочь мне :)
В увеличение изображения должно оставаться неизменным. Только ось должна быть пересчитана в мм-масштабе, а затем, конечно, адаптирована, когда используется функция масштабирования.