二进制图片:计数为1的像素数量。

42视图(30天)
下面的代码是一个简化版的一个长的代码的一部分,我遇到了一个错误。在下面的代码中,我成功地将灰度图像转换成一个二进制图像。然后我试着计算图像中像素的数量是1(通过使用for循环和本())。然而,MATLAB说,“未定义的函数或变量‘行’。”Then if I type a number instead of saying rows columns, I get the error, "if bin(i,j) == 1."
我看着本命令的语法,我试着解决这个问题。然而,我不知道如果for循环知道应用本身的形象。请让我知道如何解决这个for循环正常工作。
代码:
我= imread (“rice.png”);
图;imshow(我);
bw = imbinarize(我);
图;imshow (bw);
ctr = 0;
i = 1:行
j = 1:列
如果本(i, j) = = 1
ctr = ctr + 1;
结束
结束
结束

接受的答案

安德烈Bobrov
安德烈Bobrov 2017年7月3日
也许是这样:
我= imread (“rice.png”);
图;imshow(我);
bw = imbinarize(我);
图;imshow (bw);
ctr = 0;
i = 1:行
j = 1:列
如果bw (i, j) = = 1
ctr = ctr + 1;
结束
结束
结束
8的评论
图像分析
图像分析 2022年2月1日
我相信,经过近2年。它可能是这样的:
道具= regionprops (bw,的边界框(“大小));
k = 1:元素个数(道具)
thisBB =道具(k) .BoundingBox;
croppedImage = imcrop (bw, thisBB);
% .....现在做裁剪图像
结束

登录置评。

更多的答案(4)

1月
1月 2017年7月3日
或者没有一个循环:
bw = imbinarize(我);
ctr =总和(bw (,) = = 1);
甚至更短的二进制图像:
ctr =总和(bw (:));


图像分析
图像分析 2018年2月4日
编辑:图像分析 2022年2月1日
如果你想知道为什么你的代码不工作,您的代码的问题是,你忘了定义图像的行和列。后imread(),你需要:
(行、列,numberOfColorChannels) = (I)大小;
更好的 ,像简说,你可以简单的白色/真实/ 1像素的数量:
numWhite =总和(BW (:))% numWhite是你叫含糊不清地叫ctr(“计数器”、“重心”?)
没有嵌套循环是必需的。
甚至更好的 @James Tursa 的回答:
numWhite = nnz (bw);

bipul
bipul 2018年9月23日
编辑:bipul 2018年9月23日
函数ctr = PixelCounter (bw)
% I = imread (“rice.png”);
我% = (15、18:29);
%图;imshow(我);
% bw = im2bw(我)
%图;imshow (bw);
ctr = 0;
行(列)= (bw)大小;
i = 1:行
j = 1:列
如果bw (i, j) = = 1
ctr = ctr + 1;
结束
结束
结束
%流(1:% d \ n, ctr);
% disp (ctr);
结束
1评论
图像分析
图像分析 2018年9月23日
编辑:图像分析 2022年2月1日
希望你不 这样做。首选的方法是使用nnz () @James Tursa 说明了这一点。

登录置评。

类别

找到更多的在创建块面具帮助中心文件交换

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的