Я относительно новичок в Python, и я пытаюсь сделать забавный небольшой проект, используя Пьяаутоги и Python3.6. Цель этого проекта — создать проект на основе tensorflow, который учит играть в шахматы. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь использовать любую из команд пиксель, например. pyautogui.pixel(...) или screenshot.getpixel(...) - выскакивает ошибка и говорит следующее:
Traceback (most recent call last):
File "main.py", line 109, in <module>
Score()
File "main.py", line 100, in Score
if gui.pixelMatchesColor(tempX, tempY, (87, 83, 82), tolerance=20):
File "/Users/student/Library/Python/3.6/lib/python/site-packages/pyscreeze/__init__.py", line 413, in pixelMatchesColor
pix = pixel(x, y)
File "/Users/student/Library/Python/3.6/lib/python/site-packages/pyscreeze/__init__.py", line 436, in pixel
return RGB(*screenshot().getpixel((x, y)))
TypeError: __new__() takes 4 positional arguments but 5 were given
Я просто хочу отметить, что все остальные команды работают нормально, а не работают только команды пиксель.
Я установил все, включая pyautogui(duh), pyscreeze, pymsgbox, pytweening, xlib, opencv и любой другой пакет, о котором только мог подумать. Они были установлены с помощью этой команды: pip3 установитьимя-пакета-здесь--Пользователь. Мне нужен --Пользователь, потому что в настоящее время у меня нет прав администратора на моем компьютере, поэтому мне интересно, может ли это иметь какое-то отношение к моему нынешнему затруднительному положению.
Я также столкнулся с более ранним сообщением в своем поиске ответа, но забыл, где его нашел, поэтому извините, но я не могу связать его, но в основном там говорилось, что я должен пройти и удалить все папки тайник. Я сделал это с помощью команды терминала в папке ~/Library/Python/3.6:
find . -name "__pycache__" -type f -o -name "__pycache__" -type d -exec rm -rf {} \
Мне не нужно точное решение этой проблемы, но мне интересно, есть ли способ использовать функцию pyautogui.pixelMatchesColor(...) или любой аналог, который вы порекомендуете, которая может иметь допуск - например. что значения RGB могут отличаться на 10 единиц и по-прежнему возвращать истинный.
Для тех из вас, кто заинтересован, вот мой полный код:
#
# IMPORT ALL NECESSARY THINGS
#
import os, time, sys, pyautogui as gui, argparse as arg
#
# FAILSAFES
#
gui.FAILSAFE = True
gui.PAUSE = 0.1
#
# SET UP ARGUMENT PARSER
#
parser = arg.ArgumentParser(description='A machine learning script powered by TensorFlow designed to be run on "chess.com" using Python.')
parser.add_argument("-s", "--sleep", nargs='?', type=int, default='5', help='Number of seconds that the program should sleep before starting. This gives you time to move over to the website before the program looks for the gamboard on screen.')
args = parser.parse_args()
#
# ASKS USER FOR WHAT SIDE IT IS ON
#
side = input("Are you white or black? ")
if side == "W" or side == "w" or side == "white" or side == "White":
side = "W"
elif side == "B" or side == "b" or side == "black" or side == "Black":
side = "B"
else:
print("Invalid selection for which side!")
side = None
sys.exit(0)
#
# PRINT "READY" AND THEN WAIT FOR SPECIFIED AMOUNT OF TIME - DEFAULT 5 SECONDS
#
print("Ready! Waiting for " + str(args.sleep) + " seconds!")
time.sleep(int(args.sleep))
#
# GET AREA OF GAMEBOARD ON SCREEN
#
if side == "W":
gameboard = gui.locateOnScreen('./img/white/chessboard_white.png', confidence=0.55, grayscale=True)
left = gameboard.left - 10
top = gameboard.top - 5
right = gameboard.left + gameboard.width + 10
bottom = gameboard.top + gameboard.height + 15
elif side == "B":
gameboard = gui.locateOnScreen('./img/black/chessboard_black.png', confidence=0.55, grayscale=True)
left = gameboard.left - 10
top = gameboard.top - 5
right = gameboard.left + gameboard.width + 10
bottom = gameboard.top + gameboard.height + 15
widthInterval = (right - gameboard.left) / 8
heightInterval = (bottom - gameboard.top) / 8
#
# DEFINES A FUNCTION THAT COUNTS THE SCORE
# - NUMBER OF YOU SIDE AND THEN SUBTRACT THE NUMBER OF OPPOSITE SIDE
#
def Score():
for i in range(8):
for j in range(8):
tempX = 32 + (i * widthInterval)
tempY = 32 + (j * heightInterval)
if gui.pixelMatchesColor(tempX, tempY, (87, 83, 82), tolerance=20):
print("True!")
if side == "W":
print("White!")
elif side == "B":
print("Black!")
Score()
Примечание. Проблема возникает в последних 10 строках приведенного выше кода.
Большое спасибо за вашу помощь, и, пожалуйста, не стесняйтесь, дайте мне знать, если вам нужна дополнительная информация от меня! Максимум






Эта ошибка тоже связана с тем, что pyscreeze не может получить пиксели.