Seite 1 von 1

Modul bringt fehlermeldung das numpy nicht definiert ist

Verfasst: Dienstag 31. März 2015, 06:36
von GoldenerReiter
Hallo,
ich möchte gerne ein modul erstellen. Eigentlich habe ich es schon gemacht, jedoch bekomme ich Fehlermeldungen beim aufrufen der Funktionen
Modul:

Code: Alles auswählen

def areEqual(scrImage1, scrImage2):
    diffImage = scrImage1 - scrImage2
    if not np.any(diffImage):
        return 1
    else:
        return 0

def maxValue(scrImage):
    max = np.amax(scrImage)
    maxp = unravel_index(np.argmax(scrImage), np.shape(scrImage))
    return max, maxp[0], maxp[1]

def minValue(scrImage):
    min = np.amin(scrImage)
    minp = unravel_index(np.argmin(scrImage), np.shape(scrImage))
    return min, minp[0], minp[1]
    
def meanValue(scrImage):
    mean= np.mean(scrImage)
    return mean
    
def minMaxValue(scrImage):
    min = np.amin(scrImage)
    minp = unravel_index(np.argmin(scrImage), np.shape(scrImage))
    max = np.amax(scrImage)
    maxp = unravel_index(np.argmax(scrImage), np.shape(scrImage))
    return min, minp[0], minp[1], max, maxp[0], maxp[1]
in meinem Befehlsfenster tippe ich nun folgendes ein:
>> from PIL import Image
>> import numpy as np
>> import matplotlib.pyplot as plt
>> import DataObjectArithmetic as DOA
Dabei ist 'DataObjectArithmetic' der Name der Datei.
Um eine Funktion auszuführen mache ich
>> scrImage1 = np.array(Image.open("imageTif1.tif"))
>> scrImage2 = np.array(Image.open("imageTif2.tif"))
(Laden von zwei Bildern die ich vergleichen möchte)
>> DOA.areEqual(scrImage1, scrImage2)
nun soll das Ergebnis erstellt werden. Ich bekomme aber die Meldung: name 'np' is not defined.
Aber wieso? numpy habe ich doch schon importiert?
Wie muss ich das anders schreiben?

Re: Modul bringt fehlermeldung das numpy nicht definiert ist

Verfasst: Dienstag 31. März 2015, 06:58
von EyDu
Du musst NumPy auch in deinem Modul importieren. Importe werden nicht magisch zwischen den Modulen weitergereicht.

Re: Modul bringt fehlermeldung das numpy nicht definiert ist

Verfasst: Dienstag 31. März 2015, 08:43
von GoldenerReiter
Tatsächlich.
Eigentlich hatte ich gedacht, dass ich das schon ausprobiert hatte und es trotzdem nicht funktioniert hat.
Nun funktioniert es aber. Besten Dank :D

Eine Nachfrage hätte ich noch. Wo muss ich die Datei hinspeichern, damit ich beim Importieren nicht im pfad sein muss? Also jetzt muss ich erst im Rile-Sysetm dahin gehen, sodass ich die Datei sehen kann. aber z.B. numpy kann ich immer importieren.

Grüße

Re: Modul bringt fehlermeldung das numpy nicht definiert ist

Verfasst: Dienstag 31. März 2015, 09:30
von EyDu
Dafür hast du im Prinzip zwei Möglichkeiten. Du kannst entweder die PYTHONPATH-Variable anpassen, so dass dein Modul im Suchpfad liegt, oder du fügst den Suchpfad dynamisch in ``os.path`` ein. Hat beides seine Vor- und Nachteile. Außerdem solltest du noch einen Blick auf das virtualenv-Modul werfen, das ist bei solchen Sachen ganz nützlich.

Re: Modul bringt fehlermeldung das numpy nicht definiert ist

Verfasst: Dienstag 31. März 2015, 10:06
von BlackJack
Es gäbe noch eine dritte Möglichkeit: Das Modul ordentlich installieren. Dann muss man aber unbedingt darauf achten dass der Name kein grosses ”Kollisionsrisiko” darstellt. Und eventuell würde es auch Sinn machen ein Package anzulegen und das Modul dort hinein zu stecken, falls man da mal mehr Module haben möchte.