Терминология для гуглинга: "Локализация объекта методами компьтерного зрения".
В качестве инструментария можешь использовать opencv. Для питона это pip пакет python-opencv (импортируется под именем cv2).
Чтобы обойти проблему цвета, переведи входное изображение в оттенки серого, и потом, если оптребуется, добавь пороговое преобразование, чтобы оставить только чёрный и белый.
Подходы существуют разные. Если не требуется дикоре быстродействие, то можно использовать детектор SIFT.
Тогда у тебя будет алгоритм вида:
0. Создаёшь детектор (функция cv2.SIFT.create()) и матчер (можно cv2.BFMatcher(), он тормознутый но простой в использовании).
1. Грузишь образец искомого объекта и преобразуешь изображения (палитра серого, и т.п.)
2. Вызываешь метод детектора .detectAndCompute(), чтобы получить найденные особые точки (углы и т.п.) и их описание.
3. Повторяешь шаги 1,2 для анализируемого изображения (сцены).
4. У матчера вызываешь метод .knnMatch() c n=2. Это даст тебе 2 лучших совпадения между образцом и сценой по каждой особой точке.
5. Можно просто брать лучшее совпадение, а можно отсеять те особые точки, у которых два ближайших совпадения слишком похожи - они отсеялись.
Так или иначе, у тебя должен получиться список пар точек вида "точка на образце - найденная похожая точка на сцене".
6. Используешь функцию cv2.findHomography() или одну из родственных ей, чтобы найти матрицу преобразования. Грубо говоря, она позволит пересчитать позицию пикселя на изображении образца в позицию пикселя на изображении сцены.
Примерно так, если представить это наглядно (чтобы получить такую картинку, нужно еще несколько шагов, но она передаёт идею).
7. Дальше ты можешь использовать эту матрицу как хочешь. Например, возьми координаты центра объекта на изображении-образце, и используй её вместе с cv2.perspectiveTransform(), чтобы найти, где на сцене координаты точки центра объекта. Взяв ещё точку (в углу или на краю), сможешь найти ориентацию.
Проблема в том, что этот подход работает ТОЛЬКО если в сцене не более одного похожего объекта.
Код не привожу, набросай черновик сам, тогда можно будет его обсудить и подкорректировать. Если что, в сети можно много найти инфы по использованию opencv для решения этой задачи.