Mein Skript, das opencv verwendet, um Bilder zu drehen, wie sie sich befinden sollten, opencv tut dies automatisch, also ist es ziemlich einfach, das Bild über opencv zu öffnen und dann zu speichern.Scheinbar zufälliger Fehler beim Erstellen einer neuen Bilddatei
Ich übertrage dann die Exif-Header vom alten Bild auf das neue (mit pyexiv2) und lösche das alte Umbenennen der neuen Datei in das, was die alte Datei war.
Jedoch habe ich diesen scheinbar zufällige Fehler:
Traceback (most recent call last):
File "C:/Users/name/PycharmProjects/exif_data/test.py", line 28, in <module>
metadata.write()
File "C:\Users\name\AppData\Roaming\Python\Python27\site-packages\pyexiv2\metadata.py", line 119, in write
self._image._writeMetadata()
IOError: C:\Users\name\Desktop\TEST\IMAGES\GIS\DUPLICATE.JPG5048: Failed to rename file to C:\Users\name\Desktop\TEST\IMAGES\GIS\DUPLICATE.JPG: File exists (errno = 17)
doppelte doesnt existieren und auf Skript umbenannt jedes Mal, wird, sobald er es verlässt die Datei DUPLICATE.JPG5048 im Ordner fehlgeschlagen ist, gibt es eine Lösung? Oder fehlt mir etwas?
import numpy as np
import cv2
import pyexiv2
import os
directory = "C:\Users\name\Desktop\TEST\\IMAGES"
for dirname, dirnames, filenames in os.walk(directory):
print(dirname)
for file in os.listdir(dirname):
if file.endswith(('.jpeg', '.jpg')) or file.endswith(('.JPEG', '.JPG')) :
filename, file_extension = os.path.splitext(directory+file)
oldFile = dirname+"\\"+file
newFile = dirname+"\\DUPLICATE"+file_extension
image = cv2.imread(oldFile)
cv2.imwrite(newFile, image)
m1 = pyexiv2.ImageMetadata(oldFile)
m1.read()
m1.modified = True # not sure what this is good for
m2 = pyexiv2.metadata.ImageMetadata(newFile)
m2.read() # yes, we need to read the old stuff before we can overwrite it
m1.copy(m2)
m2.write()
metadata = pyexiv2.ImageMetadata(newFile)
metadata.read()
print ', '.join(metadata.exif_keys)
metadata.write()
key = 'Exif.Image.Orientation'
value = 1
metadata[key] = pyexiv2.ExifTag(key, value)
os.remove(oldFile)
os.rename(newFile, oldFile)
del m1
del m2
del oldFile
del newFile
'einmal fehlgeschlagen'? Was war das für ein Versagen? – CAB