【问题标题】:use a character for loop in matlab在matlab中使用字符for循环
【发布时间】:2016-05-26 06:49:21
【问题描述】:

我想在 for 循环中使用一个字符,但我不能,因为我正在使用 ginput 函数,并且每次单击鼠标都可以更改 for 循环中的第一个和结束像素我不能使用精确的像素,这是我的错误运行我的代码。

下标索引必须是实数正整数或逻辑数。

A=imread('peppers.png');
C=imshow(A);
F=rgb2gray(A);
figure,imshow(F)
B=ginput(4)
a=min(B);
b=max(B);
a1=a(1)
a2=a(2)
b1=b(1)-a(1)
b2=b(2)-a(2)
for i=a1:a1+b1
    for j=a2:a2+b2
       F(j,i)=0;
    end
end
figure,imshow(F)

【问题讨论】:

  • 我建议阅读有关索引的 MATLAB 文档。它可以为您节省大量工作。 F(a1:a1+b1,a2:a2+b2)=0 完全替代了两个循环,速度更快。

标签: matlab for-loop image-processing


【解决方案1】:

您从input 获得的值稍微偏离完整整数。使用B-round(B),您会看到错误。

要修复它,请使用round

B=round(ginput(4))

错误信息真的很好奇

尝试访问 F(142,162);索引必须是 正整数或逻辑。

【讨论】:

  • @StewieGriffin:您删除的评论是对的,您仍然可以通过单击图像之外的区域来破坏它。
猜你喜欢
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 2013-12-21
  • 2021-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多