MATLAB: неявное getPosition, странное поведение - PullRequest
0 голосов
/ 12 июля 2009

У меня есть вопрос о значениях, возвращаемых getPosition. Ниже мой код. Это позволяет пользователю установить 10 точек на данном изображении:

figure ,imshow(im);
colorArray=['y','m','c','r','g','b','w','k','y','m','c'];
pointArray = cell(1,10);
% Construct boundary constraint function
fcn = makeConstrainToRectFcn('impoint',get(gca,'XLim'),get(gca,'YLim'));
for i = 1:10
    p = impoint(gca);
    % Enforce boundary constraint function using setPositionConstraintFcn
    setPositionConstraintFcn(p,fcn);
    setColor(p,colorArray(1,i));
    pointArray{i}=p;
    getPosition(p)
end

Когда я начинаю устанавливать точки на изображении, я получаю результаты наподобие [675.000 538.000], что означает, что часть x координаты равна 675, а часть y равна 538, верно? Это то, что говорится в документации MATLAB, но поскольку изображение имеет размер 576 * 120 (как показано в окне), это не логично.

Мне показалось, что как-то getPosition сначала возвращает координату y. Мне нужно кое-что прояснить.

Спасибо за помощь

Ответы [ 3 ]

2 голосов
/ 13 июля 2009

Я только что попытался запустить ваш код в MATLAB 7.8.0 (R2009a), и у меня не было проблем с размерами изображения 576 на 120 или 120 на 576 (я не был уверен, какую ориентацию вы используете). Если я щелкну левой кнопкой мыши внутри изображения, то появится новая подвижная точка. Это не позволило мне разместить какие-либо точки за пределами изображения.

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

Я не уверен, в чем может быть ваша проблема. Возможно, это ошибка с любой версией MATLAB, которую вы используете. Я бы предложил либо перезапустить MATLAB, либо очистить все переменные из рабочей области (кроме данных изображения im ).

1 голос
/ 14 июля 2009

Возможно, стоит проверить, какой рендерер вы используете (Painter или OpenGL), коллега показал мне странное поведение с выбором точек при использовании рендерера OpenGL, которое пропало при использовании рендерера Painter.

0 голосов
/ 13 июля 2009

Ваш код использует панель инструментов обработки изображений, которой у меня нет, так что это предположение. Система координат, вероятно, настроена на окно рисунка (или, может быть, даже на экран), а не на изображение.

Чтобы проверить это, попробуйте щелкнуть точки за пределами изображения, чтобы увидеть, можете ли вы найти источник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...