1

Here is my snippet for both of them

from google.colab.patches import cv2_imshow 
import cv2 
pt = '/content/content/DATA/testing_data/1/126056495_AO_BIZ-0000320943-Process_IP_Cheque_page-0001.jpg' #@param
img = cv2.imread(pt) 
cv2_imshow(img) 

and here is the other one

import matplotlib.image as mpimg

pt = '/content/content/DATA/testing_data/1/126056495_AO_BIZ-0000320943-Process_IP_Cheque_page-0001.jpg'
image = mpimg.imread(pt)
plt.imshow(image)

Now, the image in second case is inverted and image on my system is upright

What I am mostly afraid of is, if my ML model is consuming inverted image, that is probably messing with my accuracy. What could possibly be the reason to It and how do I fix it

(ps: I cannot share the pictures unfortunately, as they are confidential ) (Run on google colab) All the help is appreciated

Christoph Rackwitz
  • 11,317
  • 4
  • 27
  • 36
Sadaf Shafi
  • 1,016
  • 11
  • 27

1 Answers1

1

Your picture is upside-down when you use one method for reading, and upright when you use the other method?

You use two different methods to read the image file:

  • OpenCV cv.imread()
  • Mediapipe mpimg.imread()

They behave differently. OpenCV's imread() respects file metadata and rotates the image as instructed. Mediapipe's function does not.

Solution: Stick to OpenCV's imread(). Don't use Mediapipe's function.


The issue is not with matplotlib. When plt.imshow() is called, it presents the image with an origin in the top left corner, i.e. the Y-axis grows downward. That corresponds to how cv.imshow() behaves.

If your plot does have an Y-axis growing upwards, causing the image to stand upside-down, then you must have set this plot up in specific ways that aren't presented in your question.

Christoph Rackwitz
  • 11,317
  • 4
  • 27
  • 36