gilesknap / gphotos-sync

Google Photos and Albums backup with Google Photos Library API
Apache License 2.0
1.97k stars 161 forks source link

why an image do not have exif data. #477

Closed Saba-Nawaz closed 4 months ago

Saba-Nawaz commented 4 months ago

from PIL import Image from PIL.ExifTags import TAGS

this is a test for our live video on fB

open test

def get_exif(filename): image = Image.open(filename) print(image) image.verify() print(image.getexif()) return image.getexif()

extract the exif data from image file

exif = get_exif(imgname) # included image

Loop through tags for print out

if exif: for k, v in exif.items(): print(str([TAGS.get(k)]) + "\t" + str(v))

why exif is empty? I have changed so many images but still the same result.

gilesknap commented 4 months ago

please can you try dropping an image in here https://onlineexifviewer.com/ if that shows no exif, please download your image direct from google photos web and check again.

Thanks

Saba-Nawaz commented 4 months ago

I am capturing the image from the webcam, and after that, I am trying to get the location. when I drop the image on https://onlineexifviewer.com/ it has no exif data too. I don't know how to solve it.

this is the code for image capturing cap = cv2.VideoCapture(0) images = [] global imgname

check if connection with camera is successfully

if cap.isOpened(): ret, frame = cap.read() #capture a frame from live video

Cut down frame to 250x250px

frame = frame[120:120+250,200:200+250, :]

l_b=np.array([0,230,170])# lower hsv bound for red
u_b=np.array([255,255,220])# upper hsv bound to red

#check whether frame is successfully captured
if ret:
    # continue to display window until 'q' is pressed
    while(True):
        if cv2.waitKey(1) & 0XFF == ord('a'):

            # Create the unique file path 
            imgname = os.path.join(ANC_PATH, '{}.jpg'.format(uuid.uuid1()))
            # Write out anchor image

            images.append(imgname)

            cv2.imwrite(imgname, frame)

          # Collect positives
        if cv2.waitKey(1) & 0XFF == ord('p'):
            # Create the unique file path 
            imgname = os.path.join(POS_PATH, '{}.jpg'.format(uuid.uuid1()))
            images.append(imgname)
            print(imgname)

            # Write out positive image
            cv2.imwrite(imgname, frame) 

        cv2.imshow("Frame",frame)   #show captured frame

        #press 'q' to break out of the loop
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
#print error if frame capturing was unsuccessful
else:
    print("Error : Failed to capture frame")
# Release the webcam
cap.release()
# Close the image show frame
cv2.destroyAllWindows()

print error if the connection with camera is unsuccessful

else: print("Cannot open camera")

gilesknap commented 4 months ago

Just to be clear here:

Saba-Nawaz commented 4 months ago

yes, I am asking about my project. yes I am openCV to capture images from a webcam

gilesknap commented 4 months ago

I'm afraid you have come to the wrong place as I have never used OpenCV. I'm of the opinion that it does not create exif because it treats images as NumPy arrays. So you would need to construct your own metadata. This article seems to confirm my thoughts https://learnopencv.com/what-is-exif-data-in-images/

Saba-Nawaz commented 4 months ago

Thanks for sharing the article.