Ответы пользователя по тегу Python
  • Telegram.error.BadRequest: File must be non-empty, ошибка в создании телеграм бота?

    @kalsc12345
    Неизвестный человек.
    Пустой запрос кхм.

    def start(update, context):
        context.chat_data['board'] = chess.Board()
        update.message.reply_photo(photo=get_board(context.chat_data['board']))
    
    def move(update, context):
        if not context.args:
            update.message.reply_text('Please specify a move!')
            return
    
        move = context.args[0]
        board = context.chat_data['board']
        try:
            board.push_san(move)
            board_image = get_board(board)
            if board_image is not None:
                send_image(context.bot, update, board_image)
            else:
                update.message.reply_text('Error: Failed to parse SVG image')
        except ValueError:
            update.message.reply_text('Invalid move!')
    
    def get_board(board):
        board_string = chess.svg.board(board=board)
        board_string = board_string.replace('\n', '')
        output = BytesIO()
        try:
            cairosvg.svg2png(bytestring=board_string, write_to=output)
        except ET.ParseError:
            print("Error: Failed to parse SVG image")
            return None
        output.seek(0)
        return output.getvalue()
    
    def send_image(bot, update, image):
        bio = BytesIO()
        bio.name = 'image.png'
        try:
            svg2png(image, write_to=bio)
        except ET.ParseError:
            print("Error: Failed to parse SVG image")
            update.message.reply_text('Error: Failed to parse SVG image')
            return
        bio.seek(0)
        bot.send_photo(chat_id=update.message.chat_id, photo=bio)


    Попробуй.
    Ответ написан
  • Как аннотировать неявные атрибуты класса?

    @kalsc12345
    Неизвестный человек.
    from typing import Any
    
    class MyClass:
        def __init__(self, param: str):
            self.param = param
    
        def __getattr__(self, attr: str) -> Any:
            # Здесь можно создать любой атрибут в зависимости от переданного имени
            if attr == 'name':
                return 'John Doe'
            elif attr == 'age':
                return 30
            else:
                raise AttributeError(f"'{type(self).__name__}' object has no attribute '{attr}'")
    Ответ написан
    3 комментария
  • Как подсчитывать на видео проходящих людей по головам?

    @kalsc12345
    Неизвестный человек.
    Кхм посути можно OpenCV заюзать
    import cv2
    
    # загружаем файл видео
    cap = cv2.VideoCapture('video.mp4')
    
    # создаем объект HOG для обнаружения людей
    hog = cv2.HOGDescriptor()
    hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
    
    # инициализируем счетчик
    count = 0
    
    # начинаем чтение видео кадр за кадром
    while True:
        ret, frame = cap.read()
        if not ret:
            break
    
        # обнаруживаем людей на кадре
        boxes, weights = hog.detectMultiScale(frame)
    
        # рисуем прямоугольники вокруг обнаруженных людей
        for box in boxes:
            x, y, w, h = box
            cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    
        # увеличиваем счетчик на количество обнаруженных людей
        count += len(boxes)
    
        # выводим количество обнаруженных людей на кадре
        cv2.putText(frame, f"Count: {count}", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
    
        # показываем кадр
        cv2.imshow('frame', frame)
    
        # останавливаем цикл, если нажата клавиша "q"
        if cv2.waitKey(1) == ord('q'):
            break
    
    # освобождаем ресурсы
    cap.release()
    cv2.destroyAllWindows()
    Ответ написан