Jennesta
Erfahrenes Mitglied
Hallo,
ich bin noch relativ neu in Python, muss aber einige Projekte damit schreiben. In dem Projekt muss ich viel mit Bildern arbeiten, daher habe ich recht große Matrizen. Da ich keine Funktion für Python gefunden habe, die Bilder von RGB in YCbCr umwandelt, wollte ich mir die Funktion selbst schreiben
Da ich normalerweise in C programmiere ist die herangehensweise daran angelehnt. Nun braucht der Code für die Ausführung allerdings mehrere Minuten, was absolut inakzeptabel ist.
Daher die Frage, kann mir irgendwer zeigen, wie man mit numpy effiziente Punktoperationen implementieren kann, ohne die Funktion selbst in C zu schreiben und dann mit Python zu nutzen?
Grüße,
Jennesta
ich bin noch relativ neu in Python, muss aber einige Projekte damit schreiben. In dem Projekt muss ich viel mit Bildern arbeiten, daher habe ich recht große Matrizen. Da ich keine Funktion für Python gefunden habe, die Bilder von RGB in YCbCr umwandelt, wollte ich mir die Funktion selbst schreiben
Python:
def rgb2ycbcr(rgb):
dim = np.shape(rgb)
for m in range(dim[0]):
for n in range(dim[1]):
rgb[m, n , 0] = 16.0 + (65.738*rgb[m, n, 0] + 129.057*rgb[m, n, 1] + 25.064*rgb[m, n, 2]) / 256.0
rgb[m, n , 1] = 128.0 + (-37.945*rgb[m, n, 0] - 74.494*rgb[m, n, 1] + 112.439*rgb[m, n, 2]) / 256.0
rgb[m, n , 2] = 128.0 + (112.439*rgb[m, n, 0] - 94.154*rgb[m, n, 1] - 18.285*rgb[m, n, 2]) / 256.0
return rgb
Da ich normalerweise in C programmiere ist die herangehensweise daran angelehnt. Nun braucht der Code für die Ausführung allerdings mehrere Minuten, was absolut inakzeptabel ist.
Daher die Frage, kann mir irgendwer zeigen, wie man mit numpy effiziente Punktoperationen implementieren kann, ohne die Funktion selbst in C zu schreiben und dann mit Python zu nutzen?
Grüße,
Jennesta