Use python to grab the screen(screenshot) But image is blurry, unsharp

Viewed 83

Environment:

  • win10 PC notbook
  • python 3.9
  • PyQt5==5.15.4 pywin32==304 opencv-python==4.5.5.64 Pillow==9.1.0

Question:

I am trying to grab my whole screen by python. The function is easy, but I get a strange question.

The screenshot image is always blurry and unsharp.

My Codes as follows:

import cv2
import os 
from PIL import ImageGrab
import numpy as np

if os.path.exists('xx.jpg'):
    os.remove('xx.jpg')

captureImage = ImageGrab.grab()
width,height = captureImage.size
img = cv2.cvtColor(np.asarray(captureImage), cv2.COLOR_RGB2BGR)
cv2.imwrite('./xx.jpg',img)
cv2.waitKey(0)

I have try alternative method to achieve screenshot function, just like pyqt5/mss/pywin32/pyautogui, but every method leads to the same question.

And I google lots of articles, I found that my screen has scaled to 125%(as recommended), as follow:

PNG:

enter image description here

So I revise it to 100%, the screenshot is sharp. But 125% is normal and comfortable vision. Then I doubt if it's DPI. But I try these codes, it does not work.

from ctypes import windll
user32 = windll.user32
user32.SetProcessDPIAware()

I am so crazy and curious that how those screenshot software resolve it. After all, we can not ensure every user has the 100% scale and has normal dpi.

I will be grateful if u could give me solutions or advices.

Solution:

Thanks to Christoph Rackwitz.

I had grab a PNG screen and update it and the two PNG image still same. But it's really different in my PC before upload.

I test a lot and I found that I open my codes screenshot by iQIYI Player. But I open windows10 self screenshot by windows Player.

It's the Reason!!!My codes is right and everything is right except iQIYI Player Software. Maybe it's the software bug.

Thanks again.

0 Answers
Related