2017-02-20 24 views
2

Как я могу найти индекс точки на клике и добавить ее в конец массива, списка или вектора?захват значения индекса из указателя при нажатии на изображение в MATLAB

h=figure; 
image(result); 
locx = []; 
locy = []; 
while (ishandle(h)) 
    pos = get(0, 'PointerLocation'); 
    locx(end + 1) = pos(1); 
    locy(end + 1) = pos(2); 
    pause(1); 
end 

В то время как я только нажал на двух точках, чтобы увидеть их х, у и индекс, много х мест было сохранено в Locx массиве. Просьба предложить решение и исправления:

locx = 

    Columns 1 through 16 

     635  1116   231   758   771   591   596   46   116   116   116  1362   852   498  1920  1663 

    Columns 17 through 32 

     733   795   795  1920  1895  1806  1061   700   123  1102  1097  1615   1   226   233   233 

    Columns 33 through 43 

     191   854   836  1920  1920  1920  1920  1920  1905  1189  1912 

enter image description here

enter image description here

ответ

3

Я хотел бы предложить использовать функцию ginput вместо:

h = figure; 
image(result); 
[locx, locy] = ginput(2); 

Это даст вам очки в осях, которые будут должны быть преобразованы в индексы в изображение, округляя их:

locx = round(locx); 
locy = round(locy); 
+0

как бы вы пишете это в цикле while, как указано выше, а также условие для захвата только точек, на которые нажимается только точка, на которую накладывается? thansk –

+0

Также я новичок, я не уверен, как сделать округление в соответствии с фактическими точками, как показано на изображениях –

+0

@MonaJalal: Это то, что он делает, без необходимости в цикле while. Он будет захватывать точки только при щелчке мышью, а функция 'ginput' не вернется, пока вы не выберете 2 балла. – gnovice

 Смежные вопросы

  • Нет связанных вопросов^_^