were to introduce hold on command
이전 댓글 표시
I have a image in which i have to draw a circle over it,i have to draw circles in many places in the image ,please tell how to procees,i saw a code in matlab central it draws only one circle ,but how to draw many circles on a image manually ,i have to click on image and have to draw circle
http://www.mathworks.com/matlabcentral/fileexchange/23121-circle-on-image
i edited from above link but the thing is that i have to draw many circle on one image ,please tell where i have to write hold on command
code
where k is my image
function [] = circle_saptha(k)
ok = 0;
while ok~=1
% figure;
imshow(k);
pt = ginput(2)
x1 = pt(1,1);
y1 = pt(1,2);
x2 = pt(2,1);
y2 = pt(2,2);
xpt = [x1 x2];
ypt = [y1 y2];
%line(x,y); % Enablw this for draw rectangle on circle
r = sqrt((x2-x1)^2 + (y2-y1)^2)
pp=rsmak('circle',r,[x1 y1]);
% figure;
% imshow(k)
fnplt(pp);
line(xpt,ypt);
xtl = x1-r;
xtr = x1+r;
xbl = x1-r;
xbr = x1+r;
ytl = y1+r;
ytr = y1+r;
ybl = y1-r;
ybr = y1-r;
x = [xtl xtr xbr xbl xtl];
y = [ytl ytr ybr ybl ytl];
%line(x,y);
for i=1:size(k,1)
for j=1:size(k,2)
x2 = j;
y2 = i;
val = floor(sqrt((x2-x1)^2 + (y2-y1)^2));
if(val == floor(r))
nim(i,j,1) = 255;
nim(i,j,2) = 0;
nim(i,j,3) = 0;
else
nim(i,j,1) = k(i,j,1);
nim(i,j,2) = k(i,j,2);
nim(i,j,3) = k(i,j,3);
end
end
end
imshow(nim);
ok = (menu('Do u want to draw another circle?','No','Yes')==1)
imshow(nim);
end
end
채택된 답변
추가 답변 (1개)
A simplified version:
while ok~=1
imshow(k);
nim = <modified k>
imshow(nim);
ok = (menu('Do u want to draw another circle?','No','Yes') == 1);
imshow(nim);
end
Now nim is overwritten each time based on k. Perhaps you want:
nim = k;
while ok~=1
nim = <modified nim>
imshow(nim);
ok = (menu('Do u want to draw another circle?','No','Yes') == 1);
end
댓글 수: 4
FIR
2013년 1월 10일
Jan
2013년 1월 10일
"nim = nim"?! Does "codes above" mean that you insert this again:
if(val == floor(r))
nim(i,j,1) = 255;
nim(i,j,2) = 0;
nim(i,j,3) = 0;
else
nim(i,j,1) = k(i,j,1);
nim(i,j,2) = k(i,j,2);
nim(i,j,3) = k(i,j,3);
end
Then nim is still filled with the values of the original k.
Please note, that I neither have understood, what you want to achieve, nor which problem occurs. I still do not know, what "the same problem" is. So please explain this short and clear: What happens and what do you want?
FIR
2013년 1월 11일
Jan
2013년 1월 11일
Then you should not insert the values of "k" in each iteration, but keep the values of "nim".
카테고리
도움말 센터 및 File Exchange에서 Images에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!