2013-04-18 41 views
1

以字符'B','M'或数字'1','2'作为图像。
我必须找出这个字符或数字的长宽比。
我没有得到正确的值,这是我的代码:如何查找图像的宽高比

E = imread('1.jpg'); 
level = graythresh(E); 
BW = im2bw(E,level); 
[m,n]=size(BW); 
AR=m/n 

enter image description here

+0

相关(不复制)问题:[统计图像中前景和背景像素数量](http://stackoverflow.com/questions/16055949/count-the-number-of-foreground-and-background-像素在图像中) – Shai

回答

5

你需要采取的字符的边界框的纵横比

s = regionprops(BW, 'BoundingBox'); 
AR = s.BoundingBox(4)/s.BoundingBox(3); 

见doc的regionprops'BoundingBox'中的值。

+0

我得到错误“在调用regionprops之前,使用bwlabel(BW)或double(BW)将二进制图像转换为 标签矩阵。”之后我使用L = bwlabel(BW); s = regionprops(L,'BoundingBox');然后我得到错误行AR = s.BoundingBox(4)/ s.BoundingBox(3) – aryan

+0

@aryan你得到一个错误,可能是因为你有'BW'多个连接组件。使用与我在上一个问题的答案中使用的相同的循环。或者,使用'double(BW)'确保将所有'1'像素作为同一个对象(在您的示例中,这看起来像首选方法)。 – Shai

+0

我使用** double(BW)**,我得到了结果。非常感谢你.. – aryan