我刚扫描了一个样本图像,我正试图检测二进制图像中值为“0”的第一个像素。 我用paint写了一个文本,当我使用下面的prog时,它总是捕获最底部的像素。
clear all;
x=imread('textjay.png');
y=im2bw(x);
height=size(y,1); % row
width=size(y,2); % col
valueoftheindex=0;
pixel_value=0;
for i=1:width
for j=1:height
pixel_value=y(j,i);
if (pixel_value==0)
valueofthewidth=i;
valueofthehieght=j;
break
end
end
end
valueofthewidth
valueofthehieght
imtool(y)
答案 0 :(得分:3)
这很大程度上取决于你认为是“第一个像素”。 假设你可以使用MATLAB指定的像素顺序,你可以使用
idx = find(y == 0, 1, 'first')
[row_idx, col_idx] = ind2sub(size(y), idx)
对于“第一性”的其他测量,您必须转置输入矩阵(图像),或采用更精确的计算方法。
是的,break
只会破坏内循环,正如dawe已经指出的那样。