0

Pythonを使って画像処理をしようとしています。

numpy.ndarrays を保持するリストを作成しようとしています。

私のコードは次のようになります。

def Minimum_Close(Shade_Corrected_Image, Size):

    uint32_Shade_Corrected_Image = pymorph.to_int32(Shade_Corrected_Image)
    Angles = []

    [Row, Column] = Shade_Corrected_Image.shape


    Angles = [i*15 for i in range(12)] 



    Image_Close = [0 for x in range(len(Angles))]
    Image_Closing = numpy.zeros((Row, Column))

    for s in range(len(Angles)):

        Struct_Element = pymorph.seline(Size, Angles[s])
        Image_Closing = pymorph.close(uint32_Shade_Corrected_Image,Struct_Element )
        Image_Close[s] = Image_Closing

    Min_Close_Image = numpy.zeros(Shade_Corrected_Image.shape)

    temp_array = [][]
    Temp_Cell = numpy.zeros((Row, Column))

    for r in range (1, Row):
        for c in range(1,Column):
            for Cell in Image_Close:

                Temp_Cell = Image_Close[Cell]

                temp_array[Cell] = Temp_Cell[r][c]

            Min_Close_Image[r][c] = min(temp_array)    



    Min_Close_Image = Min_Close_Image - Shade_Corrected_Image    

    return Min_Close_Image

このコードの実行中にエラーが発生します:

Temp_Cell = Image_Close[Cell]

TypeError: only integer arrays with one element can be converted to an index

異なる多次元配列を保持するデータ構造を作成し、それをトラバースするにはどうすればよいですか??

4

2 に答える 2

1

numpy を使用している場合、配列のリストを作成する必要はありません。

関数全体を次のように書き直すことをお勧めします。

def Minimum_Close(shade_corrected_image, size):

    uint32_shade_corrected_image = pymorph.to_int32(shade_corrected_image)

    angles = np.arange(12) * 15

    def pymorph_op(angle):
        struct_element = pymorph.seline(size, angle)
        return pymorph.close(uint32_shade_corrected_image, struct_element)

    image_close = np.dstack(pymorph_op(a) for a in angles)

    min_close_image = np.min(image_close, axis=-1) - shade_corrected_image

    return min_close_image

変数名を小文字にして、クラスとして強調表示されないようにしました。

于 2013-08-21T12:12:03.940 に答える
0

どうですか:

for cnt,Cell in enumerate(Image_Close):
  Temp_Cell = Image_Close[cnt]
于 2013-08-21T11:26:06.210 に答える