5

Tôi không thể hiển thị hình ảnh của mình để hiển thị tọa độ của con trỏ chuột và cũng sử dụng ginput để lưu trữ các điểm cùng một lúc.Cách hiển thị tọa độ và sử dụng ginput

Tôi hiện đang cố gắng như sau:

MriHotrod = imread('Image.bmp'); 
Fig = figure('Name','BobDole'),... 
    imshow(Image, 'InitialMagnification', 250) 

axis on 
impixelinfo 

Image_1 = ginput(4) 

close BobDole 

Các ginput vẫn hoạt động, nhưng impixelinfo vẫn không đổi

Pixel Info = (X, Y) Pixel Value 

Tôi biết một số phương pháp nhận được khoảng này, nhưng họ liên quan đến chức năng . Điều này có vẻ giống như một vấn đề khá đơn giản mà có thể tránh việc sử dụng các chức năng.

Trả lời

4

Nếu bạn gõ edit ginput và di chuyển đến dòng 238-ish, bạn sẽ thấy

% Adding this to enable automatic updating of currentpoint on the figure 
set(fig,'WindowButtonMotionFcn',@(o,e) dummy()); 

Nói cách khác, ginput lập một WindowButtonMotionFcn trong hình. Tôi đoán là impixelinfo cũng sử dụng chức năng này, vì vậy nó sẽ bị vô hiệu hóa ngay sau khi ginput được gọi.

Thật vậy, trong impixelinfoval (một chức năng được sử dụng bởi impixelinfo), chúng tôi tìm thấy xung quanh dòng 83:

callbackID = iptaddcallback(hFig,'WindowButtonMotionFcn', @displayPixelInfo); 

Điều kỳ lạ là sau đó: làm thế nào để nó có được thiết lập lại sau khi bạn nhấp 4 điểm?

ma thuật này được thực hiện bằng dòng 222-ish của ginput:

initialState.uisuspendState = uisuspend(fig); 

Rõ ràng, uisuspend là một chút chức năng không có giấy tờ được sử dụng để tạm ngưng bất kỳ WindowButton* chức năng tồn tại trước đó, để thiết lập lại chúng sau này. Vì vậy, nếu bạn nhận xét ra dòng này

%initialState.uisuspendState = uisuspend(fig); 

và lưu ginput, và làm lại toàn bộ sự việc, bạn sẽ thấy hành vi mà bạn muốn.

Bạn cũng sẽ thấy lý do tại sao các chức năng này bị tạm ngưng ngay từ đầu - Vì các lý do tôi không hiểu rõ, mọi thứ sẽ không hoạt động chậm khi hai chức năng này được bật.

+0

Cảm ơn bạn đã trả lời, rất tiếc, các hàm ginput của chúng tôi phải rất khác nhau, vì không có dòng nào bạn đề cập đến trong hàm ginput của tôi. Tôi đã cố gắng bình luận này ra: state = uisuspend (fig) Điều này xuất hiện ở dòng 92. Điều này đã không làm việc tuy nhiên. – Shinobii

+0

Bạn có phiên bản Matlab nào? –

+0

Phiên bản: 7.10.0 R2010a – Shinobii

Các vấn đề liên quan