为什么不按照应有的方式减少这种减量?

时间:2017-02-14 13:17:28

标签: python python-3.x loops iteration

我很确定我犯了一个愚蠢的错误,但我似乎找不到它已经有一段时间了。

我(成功)加载一些图像,将它们转换为灰度,并将其转换为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)

3 个答案:

答案 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>