我很确定我犯了一个愚蠢的错误,但我似乎找不到它已经有一段时间了。
我(成功)加载一些图像,将它们转换为灰度,并将其转换为b& w。然后我想制作一个方法,通过测量每个像素的平均颜色值(0 ... 255)来评估每一行像素,并给出第一个低于某个阈值的行号。它有效,但扩展方法从底部做同样的事情却没有。这是它的外观:
t_thresh_hor = 210.0
def core_text_loc(image):
height, width = image.shape
height = height - 1 # to adjust for starting with 0
width = width - 1 # to adjust for starting with 0
top_trim = 0
bot_trim = height
i = 0
while i < height and top_trim == 0:
row = image[i, 0:-1]
i = i + 1
if numpy.mean(row) < t_thresh_hor:
top_trim = i
# here it stops working
i = height
while i > 0 and bot_trim == height:
row = image[height, 0:-1]
if numpy.mean(row) < t_thresh_hor:
bot_trim = i
i = i - 1
return(top_trim, bot_trim)
我知道阈值是正确的(当我手动访问特定行时有效),但是bot_trim总是返回图片的高度,这意味着它在第一次迭代时停止了(?)。 我做错了什么?
编辑: 示例案例:我正在测试两张图片: 第一个是4724x3177,输出是: top_trim:1216(正确) bot_trim:4723(应该是≈4400) 第二个4705 3177 top_trim:315(正确) bot_trim:4704(应该是≈4400)
答案 0 :(得分:3)
row = image[height, 0:-1]
您总是从最后一行读取,而不是您想要的i
行。尝试将height
更改为i
。
答案 1 :(得分:3)
在第二个while循环中,您使用了
row = image[height, 0:-1]
它应该是
row = image[i, 0:-1]
答案 2 :(得分:2)
更改
row = image[i, 0:-1]
到
<table id="ctl00_LeftColumnMiddle_Table1" border="0">
<tbody>
<tr>
<td>
<table border="0">
<tbody>
<tr>
<td >Contractor Name</td><td>UNITED RENTALS HIGHWAY TECHNOLOGIES INC</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td><table border="0">
<tbody>
<tr>
<td >Contractor Name</td><td>UNITED RENTALS NORTHWEST INC</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>