Frame capture from videos: I-frame vs P-frames I'm trying to capture various frames within a x264-encoded video files into png files (in python), and then compare the quality of them:

cap = cv2.VideoCapture(filename);
//get frame_number for saving, and save the frame
cap.set(cv2.CAP_PROP_POS_FRAMES,frame_no);
ret, frame = cap.read()

cv2.imwrite(dir_path+'uniform_frame_'+str(frame_no)+".png", frame);


Now I was wondering if I fetch an I-Frame, does it mean that it has a higher quality than other frames, e.g. P-frames and B-Frames? (inherently, keyframes are not compressed, so they must have higher quality and less noise).
"I, B and P" don't refer to the viewed frames, they refer to the encoded, stored forms of the frames. However the frame is encoded in the file or stream, when it appears on the screen or is extracted as a still it is a complete frame, reconstructed from the IBP information as needed.