I am working in opencv(2.4.11) python(2.7) and was playing around with gray images. I found an unusual behavior when loading image in gray scale mode and converting image from BGR to GRAY. Following is my experimental code: import cv2 path = 'some/path/to/color/image.jpg' # Load color image (BGR) and convert to gray img = cv2.imread(path) img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Load in grayscale mode img_gray_mode = cv2.imread(path, 0) # diff = img_gray_mode - img_gray diff = cv2.bitwise_xor(img_gray,img_gray_mode) cv2.imshow('diff', diff) cv2.waitKey() When I viewed the difference image, I can see the left out pixels instead of jet black image. Can you suggest any reason? What is the correct way of working with gray images. P.S. When I use both the images in SIFT, keypoints are different which may lead to different outcome specially when working with bad quality images. Continue reading...