[PYTHON] J'obtiens une erreur lorsque je mets opencv dans pyautoGUI

Aperçu

Faire de la RPA avec python Lors de l'utilisation de pyautogui Il y a des moments où vous souhaitez effectuer une reconnaissance de tolérance ou d'échelle de gris. À ce moment-là, il sera nécessaire d'insérer opencv.

Cependant, je ne pouvais pas l'utiliser après tout. Je publierai les détails de l'erreur et les solutions de contournement.

contenu de l'erreur

pos = pyautogui.locateCenterOnScreen(GetImage(imgname), region=inputregion) Ce code a fonctionné, mais a soudainement cessé de fonctionner. pip opencv-python, pos = pyautogui.locateCenterOnScreen(GetImage(imgname), region=inputregion, grayscale=True) J'ai essayé de le faire correspondre à l'échelle de gris en réécrivant.

output


============================= test session starts =============================
platform win32 -- Python 3.8.5, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
================================== FAILURES ===================================
    pos = pyautogui.locateCenterOnScreen(GetImage(imgname), region=inputregion,grayscale=True)
C:\tools\miniconda3\envs\rpa2\lib\site-packages\pyautogui\__init__.py:175: in wrapper
    return wrappedFunction(*args, **kwargs)
C:\tools\miniconda3\envs\rpa2\lib\site-packages\pyautogui\__init__.py:207: in locateCenterOnScreen
    return pyscreeze.locateCenterOnScreen(*args, **kwargs)
C:\tools\miniconda3\envs\rpa2\lib\site-packages\pyscreeze\__init__.py:400: in locateCenterOnScreen
    coords = locateOnScreen(image, **kwargs)
C:\tools\miniconda3\envs\rpa2\lib\site-packages\pyscreeze\__init__.py:360: in locateOnScreen
    retVal = locate(image, screenshotIm, **kwargs)
C:\tools\miniconda3\envs\rpa2\lib\site-packages\pyscreeze\__init__.py:340: in locate
    points = tuple(locateAll(needleImage, haystackImage, **kwargs))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
needleImage = array([[31, 31, 31, ..., 31, 31, 31],
       [31, 31, 31, ..., 31, 31, 31],
       [31, 31, 31, ..., 31, 31, 31],
    ...31, 31, 31, ..., 31, 31, 31],
       [31, 31, 31, ..., 31, 31, 31],
       [31, 31, 31, ..., 31, 31, 31]], dtype=uint8)
haystackImage = array([[60, 60, 60, ..., 60, 60, 60],
       [60, 60, 60, ..., 60, 60, 60],
       [60, 60, 60, ..., 60, 60, 60],
    ...16, 16, 16, ..., 16, 16, 16],
       [16, 16, 16, ..., 16, 16, 16],
       [16, 16, 16, ..., 16, 16, 16]], dtype=uint8)
grayscale = True, limit = 1, region = (0, 945.0, 240.0, 135.0), step = 1
confidence = 0.999
    def _locateAll_opencv(needleImage, haystackImage, grayscale=None, limit=10000, region=None, step=1,
                          confidence=0.999):
        """
        TODO - rewrite this
            faster but more memory-intensive than pure python
            step 2 skips every other row and column = ~3x faster but prone to miss;
                to compensate, the algorithm automatically reduces the confidence
                threshold by 5% (which helps but will not avoid all misses).
            limitations:
              - OpenCV 3.x & python 3.x not tested
              - RGBA images are treated as RBG (ignores alpha channel)
        """
        if grayscale is None:
            grayscale = GRAYSCALE_DEFAULT
    
        confidence = float(confidence)
    
        needleImage = _load_cv2(needleImage, grayscale)
        needleHeight, needleWidth = needleImage.shape[:2]
        haystackImage = _load_cv2(haystackImage, grayscale)
    
        if region:
>           haystackImage = haystackImage[region[1]:region[1]+region[3],
                                          region[0]:region[0]+region[2]]
E           TypeError: slice indices must be integers or None or have an __index__ method
C:\tools\miniconda3\envs\rpa2\lib\site-packages\pyscreeze\__init__.py:202: TypeError
=========================== short test summary info ===========================
FAILED test_iqctrl.py::test_iqcreate - TypeError: slice indices must be integ...
============================== 1 failed in 2.03s ==============================

environnement

Une liste des modules python que vous utilisez.

conda install python
pip install pyautogui
pip install rope yapf black autopep8 pylint pytest
pip install tqdm
pip install pyperclip
pip install pyodbc
pip install cx_Oracle

J'ai ajouté opencv-python ici.

Le système d'exploitation est Windows 10.

Conclusion

La fonction _locateAll_opencv n'a pas été testée dans python3.x et est en cours de développement. J'obtiens une erreur telle que "L'index qui tranche le tableau doit être un entier". Je n'ai pas pu m'impliquer car c'était dans le module pyautogui.

solution de contournement

Actuellement, supportez 2.X ou abandonnez opencv. Si ni l'un ni l'autre n'est acceptable, vous devrez peut-être abandonner la recherche d'images en niveaux de gris et ambiguës.

Si vous pouvez réécrire la fonction _locateAll_opencv elle-même, il serait utile que vous puissiez extraire la requête vers Github.

Matériaux associés

Recommended Posts

J'obtiens une erreur lorsque je mets opencv dans pyautoGUI
J'ai eu une erreur lorsque j'ai mis opencv dans python3 avec Raspeye [Remedy]
Quand j'obtiens une erreur avec Pylint sur Windows Atom
J'ai eu une erreur lors de l'enregistrement avec OpenCV
Quand j'obtiens une erreur de pilote chrome dans Selenium
J'obtiens une erreur en essayant meinheld + WebSocket + mongodb
Lorsqu'une erreur se produit dans le scraping python (requêtes)
Dans le tutoriel Chainer, j'obtiens une erreur lors de l'importation d'un package. (moquer)
J'obtiens une erreur lorsque je mets un plug-in Python dans Visual Studio Code sous l'environnement pyenv
J'obtiens une erreur avec les pandas d'importation.
J'obtiens une erreur en essayant d'installer maec 4.0.1.0 avec pip
J'obtiens une erreur avec toutes les commandes yum
Erreur d'importation: impossible d'importer le nom 'Flask' lorsque le nom de fichier est flask.py dans Flask
J'obtiens une exception java.util.regex.PatternSyntaxException lors du fractionnement d'une chaîne dans PySpark
Quand OpenCV hconcat provoque une erreur pour une raison quelconque
J'ai eu une erreur lors de l'utilisation de Tensorboard avec Pytorch
J'obtiens une erreur lors de l'installation de scipy sur t2.micro car je n'ai pas assez de mémoire
Que faire si vous obtenez une erreur lors de l'importation de matplotlib en Python (Mac)
Je souhaite envoyer un message d'erreur en japonais avec le formulaire de changement de mot de passe django
J'obtiens une erreur lorsque j'essaie d'élever Python à la série 3 en utilisant pyenv dans Catalina
J'ai eu une erreur dans vim ou zsh dans la série Python 3.7
J'obtiens [Erreur 2055] en essayant de me connecter à MySQL avec Heroku
Que faire si vous obtenez une erreur lors de l'exécution de "certbot renouveler" dans l'environnement CakePHP
J'ai eu une erreur lorsque j'ai essayé de traiter luigi en parallèle dans Windows, mais la solution
J'obtiens un UnicodeDecodeError avec mecab-python3
Résolution d'une erreur lors de la mise en place de pygame dans python3 sur raspberry pi
J'obtiens une ImportError dans appengine_config.py
J'obtiens une KeyError dans pyclustering.xmeans
J'ai eu un AttributeError en me moquant de la méthode ouverte en python
Mettez python, numpy, opencv3 dans ubuntu14
J'ai eu une erreur lorsque j'ai exécuté composer global require laravel / installer
J'ai eu une erreur SSL lorsque j'ai installé Anaconda dans un nouvel environnement, donc je l'ai résolu (Windows10, Anaconda3-2019.10)
J'obtiens une erreur du système d'exploitation: [Errno 8] Erreur de format d'exécution lors de l'exécution d'une application Flask avec une commande python
Une erreur s'est produite dans l'imputer de scikit-learn
J'obtiens un attribut impossible à définir lors de l'utilisation de @property en python
J'ai eu une erreur lorsque j'ai exécuté meteor add accounts-password
J'ai eu une erreur en essayant d'installer Xgboost et sa solution
Que faire si vous obtenez une erreur lors du chargement de mnist
TypeError: resolution () a obtenu un argument de mot-clé inattendu 'strict' dans Django
Lorsque j'essaie de mettre à niveau pip, après avoir échoué, on me demande de mettre à niveau et de boucler indéfiniment
[OSX] [pyenv] Que faire lorsqu'une erreur SSL se produit dans pip
J'ai mis Python 2.7 dans Sakura VPS 1 Go.
L'histoire d'une erreur dans PyOCR
J'ai mis Linux (Ubuntu) dans VAIO SX14.
Je ne peux pas obtenir l'élément dans Selenium!
Que faire si vous obtenez une erreur en essayant d'envoyer un message dans tasks.loop () immédiatement après le démarrage
J'obtiens une erreur ~ est zéro, U singulier lors du passage d'une matrice distribuée co-distribuée de la couche linéaire à MultivariateNormal
Solution de contournement si vous obtenez une erreur lors de la tentative d'installation de PySide avec pip
[python] Que faire si vous obtenez une erreur avec send_keys dans le chrome sans tête
Une fenêtre étrange apparaît lors de l'utilisation de la boîte de dialogue Ouvrir le répertoire dans Tkinter
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
[Python] Choses à vérifier lorsqu'une erreur de décodage Unicode apparaît dans Django
Si vous obtenez une longue erreur lors de la tabulation d'un shell interactif avec Anaconda
Erreur survenue dans OpenCV3 et sa solution Précautions lors de l'utilisation d'OpenCV3 sur Mac
J'ai essayé d'obtenir une image en grattant
Quand j'essaye matplotlib en Python, il dit 'cairo.Context'