PIL: IOError: [Errno 13] В доступе отказано: [picturename.jpg] - PullRequest
2 голосов
/ 27 апреля 2019

Я кодирую цикл, который делает снимки экрана и сохраняет изображение с тем же именем, что и ранее. Проблема в том, что после случайного числа итераций программа прерывается со следующей ошибкой:

C:\Folder>python test.py
Traceback (most recent call last):
  File "test.py", line 30, in <module>
    screen_record()
  File "test.py", line 19, in screen_record
    printscreen.save(img_name)
  File "C:\Python27\lib\site-packages\PIL\Image.py", line 2004, in save
    fp = builtins.open(filename, "w+b")
IOError: [Errno 13] Permission denied: 'screen.jpg'

В чем может быть проблема? Я ценю любую поддержку

Код:

import numpy as np
from PIL import ImageGrab
import cv2
import time
import os
from matplotlib import pyplot as plt
from pynput.keyboard import Key, Controller

def screen_record():

    keyboard = Controller()

    img_name = 'screen.jpg'

    while(True):

        printscreen =  ImageGrab.grab(bbox=(0,0,385,697))

        printscreen.save(img_name)

        img_rgba = cv2.imread(img_name,cv2.IMREAD_UNCHANGED)            

        cv2.namedWindow('window', cv2.WINDOW_NORMAL)
        cv2.imshow('window', img_rgba)

        if cv2.waitKey(25) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            break

screen_record()

1 Ответ

1 голос
/ 27 апреля 2019

Проблема решена. Конечный код:

import numpy as np
from PIL import ImageGrab
import cv2
import time
import os
from matplotlib import pyplot as plt
from pynput.keyboard import Key, Controller

def screen_record():

    keyboard = Controller()
    cv2.namedWindow('window', cv2.WINDOW_NORMAL)

    while(True):

        printscreen =  np.array(ImageGrab.grab(bbox=(0, 0, 385, 697)))          
        RGB_img = cv2.cvtColor(printscreen, cv2.COLOR_BGR2RGB)
        cv2.imshow('window', RGB_img)

        if cv2.waitKey(25) & 0xFF == ord('q'):
            cv2.destroyAllWindows()
            break

screen_record()
...