Хобрук: Ваш путь к мастерству в программировании

TypeError: урожая () принимает от одного до двух позиционных аргументов, но три были даны

Я работал с numpy, PIL и OpenCV, чтобы создать систему обнаружения и обработки лиц. То, что я пытаюсь сделать, это обрезать ограничивающие рамки (для дальнейшей обработки, которую я еще не написал), поэтому я написал следующее:

import cv2
import numpy as np
from PIL import Image 
def main():
    #Creates a camera object
    vidCapture = cv2.VideoCapture(0)
    while 1:
        faceDetector = FaceDetector()
        #stores the current frame into the frame variable
        ret, frame = vidCapture.read()
        #detects any faces and draws bounding boxes around them
        img = faceDetector.find_any_faces(frame)
        processing = Processing()
        #crops everything around the bounding boxes for the faces
        processing.mask(frame, faceDetector.getPoint1(), faceDetector.getPoint2())

class Processing():

    #masks around the bounding boxes for the face
    def mask(self, image, p1, p2):
        #creates a numpy array from the image
        arrimg = np.array(image)
        #creates a PIL Image from the np array
        img = Image.fromarray(arrimg)

        #crops around each bounding box
        cropped_image = img.crop(p1, p2)
        return cropped_image

Это выдает TypeError с сообщением: «crop() принимает от 1 до 2 позиционных аргументов, но было задано 3». Из того, что я смог найти, обычно это происходит из-за того, что self не включается в качестве параметра для метода, но я включаю свой код в код. Если бы кто-нибудь мог помочь, это было бы здорово!



Ответы:


1

img.crop() занимает один кортеж в качестве параметра (второй — уже добавленный self). Когда вы передаете 2, это заканчивается тремя аргументами, что дает вам ошибку:

Image.crop (коробка = нет)

Возвращает прямоугольную область из этого изображения. Поле представляет собой 4-кортеж, определяющий левую, верхнюю, правую и нижнюю координаты пикселя.

Параметры: box – прямоугольник обрезки в виде (левого, верхнего, правого, нижнего)-кортежа.

Вы можете добавить свои кортежи вместе, чтобы сделать один кортеж из 4 элементов:

img.crop(p1 + p2)

или распространять их:

img.crop((*p1, *p2))
15.03.2020
Новые материалы

Решения DBA Metrix
DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

Начало работы с Блум
Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...