• Почему не получается установить библиотеку dlib?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    dlib максимум 3.6 Python поддерживает.
    Думаю, правильно будет создать виртуальное окружение (например virtualenv), pycharm это делает особенно удобно; и в нем поставить нужную версию python и остальные нужные библиотеки ставить там же. И там же писать код.

    Также со слов Евгений Шатунов надо убедиться, что
    должна стоять нагрузка на разработку C++ приложений с использованием cmake.
    - как я понял, как раз об этом писали в большом транспаранте в traceback.
    Ответ написан
    3 комментария
  • Почему при использовании with open не добавляются в сравнение отрицательные числа?

    Vindicar
    @Vindicar
    RTFM!
    Ну во-первых, почему вначале read(1)? Это читает один символ, а не одну строку, так что если у тебя более 10 чисел в файле, работать будет некорректно.
    Во-вторых, isdigit() проверяет, что строка содержит только цифры. Знак "-" цифрой не является. Поэтому твой код такие строки игнорирует.
    Ответ написан
    3 комментария
  • Как подрезать слово(переменную) в python с двух сторон?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    • Отложить ботошлепство
    • Потратить некоторое время на изучение основ языка
    • Вернуться к задаче
    Ответ написан
    3 комментария
  • SyntaxError: invalid syntax почему?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    В коде нет отступов.
    Ответ написан
  • Только начал свое знакомство с Python. Вроде бы код верный, но высвечивается ошибка. В чем может быть проблема?

    Vindicar
    @Vindicar
    RTFM!
    Во-первых, это неверно. map() принимает два аргумента: функцию, которую нужно применить, и коллекцию, к которой её применяем. Ты, к тому же, скобку не закрыл.
    a,b,n=map(float(input().split())
    Надо так:
    a,b,n=map(float, input().split() )

    Во-вторых, по-моему, у тебя кривой расчёт. ИМХО, проще всего рассчитать цену книги в копейках, а потом уже отталкиваться от этого.
    price_kop = 100 * a + b
    total_kop = price * n
    total_gr, total_kop = divmod(total_kop, 100)
    print(total_gr, total_kop)
    Ответ написан
    Комментировать
  • Как определить размер объекта на фото при помощи python?

    Vindicar
    @Vindicar
    RTFM!
    Смотри в сторону OpenCV. Какой конкретно метод - зависит от искомого объекта: один ли он в кадре, насколько он контрастен по отношению к фону, насколько много на нём контрастных деталей, и т.д.
    Есть template matching для случаев, когда видимый размер и ориентация известны. Работает для нескольких объектов.
    Есть feature matching, для случаев, когда объект только один и имеет контрастные, узнаваемые элементы, но может быть разного размера и ориентации.
    Есть каскады Хаара (или тут) для поиска множества объектов известной ориентации, но с варьируемым размером.
    Есть backprojection, если объектов несколько, но они имеют характерный, узнаваемый набор цветов.
    Копай, разбирайся, выбирай.

    Если же вопрос в том, чтобы определить масштаб снимка, то тут самый простой способ - использовать шахматный шаблон с заранее известным размером ячейки и числом строк/столбцов. Тогда можно будет оценить расстояние между углами шаблона в пикселах, и сопоставить его с размером объекта в том же кадре. Заодно можно будет попробовать исправить перспективные искажения (попробовать переделать снимок в "вид строго сверху").
    Ответ написан
    5 комментариев
  • Как проверить наличие прозрачных пикселей?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    читать заголовки файлов, если pnga = есть , если просто png = быть не может
    Ответ написан
    3 комментария
  • Не работает условие Python, SQLite как решить и почему?

    fenrir1121
    @fenrir1121
    Начни с документации
    chat_verification = {message.chat.id}
    check = cursor.execute(f"SELECT chat_id FROM chat_id_table WHERE chat_id ='{chat_verification}' AND verification = 1

    Вооружайтесь принтами и смотрите что вы наговнокодили в этих двух строчках.
    Примерно каждый второй вопрос в SQLite сводится к ответу не используйте f строки в SQL запросах
    И вы вообще осознаете какой тип данных у chat_verification?

    В целом если 10 строчек кода требуют двух вопросов на хабре берите за привычку разбираться какими данными и типами данных вы манипулируете. Не работает - запускаете отладчик или принтуете и смотрите соответствуют ли данные и типы данных вашим ожиданиям.
    Ответ написан
  • Как распаковать вложенный список?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Наверное, надо проверять элемент исходного списка, является ли он списком, и только тогда распаковывать?
    Если уровень вложенности у нас один, то так и написать
    chained = []
    for item in posl:
        if isinstance(item, list):
            for subitem in item:
                chained.append(subitem)
        else:
            chained.append(item)

    Это будет самый кондовый алгоритм. Задачу можно реализовать и короче, и оптимальнее. Но при изучении программирования надо сначала научиться составлять самому простейшие алгоритмы и их реализовывать, а не просто пытаться использовать по очереди какие-то магические заклинания - авось какое-то сработает. А если не сработает - то идти на Хабр, чтобы тебе его написали.
    Любой красивый код следует применять только тогда, когда ты понимаешь, как он работает, что делает внутри. А если не понимаешь, то лучше сначала разобраться, реализовать тот же алгоритм руками. Иначе ты будешь не программист, а обезьяна с гранатой.

    Если вложенность неограниченная, то придется познакомиться с таким понятием, как рекурсия.
    Ответ написан
    Комментировать
  • Где на практике применяются комплексные числа? В каких сферах IT они нужны?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Моделирование электронных схем, переходные процессы в электрических сетях, обработка сигналов навскидку...
    ЗЫ: Программирование - это не только кнопочки в формочках рисовать...
    Ответ написан
    Комментировать
  • Как сделать чтобы он рисовал один прямоугольник до отпускания, а не рисовал кучу?

    Vindicar
    @Vindicar
    RTFM!
    Еще один шикарный пример вопроса не по теме. В заголвоке вопроса лаги, а по делу
    Как сделать чтобы он рисовал один прямоугольник до отпускания, а не рисовал кучу?


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

    Тебе нужно делать копию оригинального изображения, рисовать на ней, и показывать эту изменённую копию.
    import cv2
    import sys
    import matplotlib.pyplot as plt
    original = cv2.imread(sys.argv[1])
    ix = -1
    iy = -1
    drawing = False
    
    def draw_reactangle_with_drag(event, x, y, flags, param):
        global ix, iy, drawing, original
        if event == cv2.EVENT_LBUTTONDOWN:
            drawing = True
            ix = x
            iy = y
        elif event == cv2.EVENT_MOUSEMOVE:
            if drawing == True:
                img = original.copy()
                cv2.rectangle(img, pt1=(ix,iy), pt2=(x, y),color=(0,255,255),thickness=10)
                cv2.imshow("Title of Popup Window", img)
        elif event == cv2.EVENT_LBUTTONUP:
            drawing = False
            img = original.copy()
            cv2.rectangle(img, pt1=(ix,iy), pt2=(x, y),color=(0,255,255),thickness=10)
            print(ix, iy, x, y)
            cv2.imshow("Title of Popup Window", img)
    
    cv2.namedWindow(winname= "Title of Popup Window")
    cv2.setMouseCallback("Title of Popup Window", draw_reactangle_with_drag)
    cv2.imshow("Title of Popup Window", original)
    while True:
        if cv2.waitKey(10) == 27:
            break
    cv2.destroyAllWindows()


    А вообще, если ты хочешь сделать выделение области рамкой, cv2.selectROI() в помощь.
    Ответ написан
    3 комментария
  • БД или JSON? Можно ли?

    includedlibrary
    @includedlibrary
    Можно, я разрешаю. Но вообще стоит учитывать, что в будущем скорее всего понадобится хранить какую-либо ещё информацию, добавлять новые записи, удалять и обновлять старые. Всё вышеперечисленное должно ещё и в многопоточной среде работать. Теперь стоит задуматься, а оно вам надо потом с json на СУБД переводить, если можно сразу использовать СУБД, а не костыли городить?
    Ответ написан
    Комментировать
  • Прозрачный цвет цветовых пикселей. как сделать?

    Vindicar
    @Vindicar
    RTFM!
    cv2_inwrite(/content/2 (1).jpeg, im)
    Во-первых, куда кавычки подевал?
    Во-вторых, jpeg не поддерживает прозрачность.
    В-третьих, обычное изображение - это массив вида (H, W, 3), где W и H - ширина и высота в пикселях, а 3 - каналы RGB.
    Тебе нужно создать изображение вида (H, W, 4), скопировать в него твоё изображение в первые три канала, затем заполнить последний канал значениями прозрачности (255 для совсем непрозрачных, 0 для совсем прозрачных).
    Так как cv2 хранит писксели в массиве numpy, читай туториалы по работе с массивами numpy, чтобы понять, как это сделать.
    Затем сохрани изображение в формате, поддерживающем прозрачность, например в PNG.
    Ответ написан
    4 комментария
  • Как определить квадрат, прямоугольник и пустой фон OpenCV?

    Vindicar
    @Vindicar
    RTFM!
    Можешь попробовать найти контур, а потом использовать cv2.minAreaRect() для поиска минимального повёрнутого ограничивающего прямоугольника. minAreaRect() тебе вернёт кортеж вида (cx, cy), (w, h), angle, где cx, cy - координаты центра, w, h - размеры прямоугольника, angle - угол поворота в градусах.
    Имей ввиду, что отношение w/h будет близко к единице для квадратов, но не обязательно равно единице. Тебе придётся выбрать какой-то порог отсечения.

    А ещё посоветую ознакомиться вот с этой статьёй, там тоже интересный подход.
    Ответ написан
    1 комментарий
  • Как использовать ImageMagick в python?

    MrShandy
    @MrShandy
    Python
    https://docs.wand-py.org/en/0.6.8/
    Изучай документацию и пиши
    Ответ написан
    Комментировать
  • Как можно определить что цвет относится к синему (оттенки синего)?

    Цвет перевести в модель HSV – например, модулем colorsys.

    H определяет как раз оттенок. Установите опытным путём в Фотошопе, какой диапазон значений H можно отнести к «оттенкам синего (голубого)».

    Вариации двух других параметров, S (насыщенность) и V (яркость) не влияют на «цвет» оттенка.
    Ответ написан
    2 комментария
  • Как можно определить что цвет относится к синему (оттенки синего)?

    Vindicar
    @Vindicar
    RTFM!
    Очевидно, нужно определить, что с твоей точки зрения "оттенок синего".
    Например, "синяя составляющая должна быть максимальной, и должна не менее чем в два раза превышать большую из красной и зеленой составляющих". Но этот подход ограничен, так как RGB (а точнее BGR) модель не слишком удобна для таких манипуляций с цветом.

    Для большего удобства переведи цвет в HSV. Тогда ты сможешь огранить цвет (H) некоторым диапазоном, задать минимально допустимую насыщенность (S, чем меньше - тем более серый цвет) и минимально допустимую яркость (V).
    Ответ написан
    1 комментарий
  • Python 3.8 как задать строку с кириллицей?

    vabka
    @vabka
    Токсичный шарпист
    Тебе просто надо сохранить файл в нормальной Utf-8 кодировке, а не в 1251
    Ответ написан
    2 комментария
  • Как с MathNet.Numerics уменьшить число коэффициентов у преобразования Фурье?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Быстрое преобразование Фурье - это алгоритм вычисления дискретного преобразования фурье. От интеграллов на картинках оно отличается тем, что там не функция от которой береться интеграл, а массив данных, которые как-то суммируются. Оно называется быстрым, потому что там идет вычисление не в лоб по формуле из википедии, а чуть хитрее, за счет чего оно работает быстрее.

    В компьютерах используется дискретное преобразование, потому что ну не могут компьютеры работать с бесконечным неприрывным объектом, коим является функция.

    И да, там результат - это массив комплексных чисел, поэтому выходные данные в 2 раза больше входных, которые являются вещественными.
    Ответ написан
    3 комментария
  • Как сигнализировать когда объект выходит за границы?

    Vindicar
    @Vindicar
    RTFM!
    Вопрос и впрямь не по питону, алгоритм легко портируется.
    Если нужно детектить именно пересечение любой из точек границы, и именно для круга и квадрата, то это очень просто. Уменьши квадрат, сдвинь каждую сторону внутрь на радиус круга.
    Например, у тебя был квадрат от (0;0) до (100;100), круг радиусом 10 (диаметром 20). Новый квадрат будет от (10;10) до (90;90).
    После этого проверяй, входит ли центр круга внутрь нового квадрата. Если входит - круг внутри исходного квадрата. Если центр на стороне - круг касается стороны исходного квадрата. Если центр вне нового квадрата - круг вышел за границу исходного.
    Проверка вхождения точки внутрь ортогонального (стороны параллельны осям координат) прямоугольника выполняется тривиально, сам догадаешься как.

    Есть второй способ, базируется на массивах numpy (python-opencv их использует для хранения массивов пикселей изображения).
    Делаешь два изображения-маски (одноканальных, одного размера), одно для одного объекта, другое для другого. В твоём случае одно (A) будет содержать белый круг на чёрном фоне, а другое (B) - чёрный квадрат на белом фоне.
    Тогда можно будет сделать так:
    intersection = numpy.logical_and(A, B)
    if intersection.any():
        print('Collision!')

    logical_and() вернёт логический массив того же размера, что A и B. Элемент массива будет истиннен только если соотвествующие элементы в A и B будут ненулевыми.
    Таким образом, если два объекта пересекаются, то logical_and() вернёт True для пересёкшихся пикселей.
    А метод any() вернёт True если любой элемент массива истинен, т.е. если есть хоть один пересёкшийся пиксель.

    Этот метод куда более ресурсоёмкий, чем то что я описал в выше,но зато работает для объектов произвольной формы. Только нарисуй их.
    Кроме того, можно сделать numpy.count_nonzero(intersection), чтобы узнать, насколько велико пересечение (сколько пикселей в нём). Это тоже может быть полезно если ты хочешь "прощать" небольшие пересечения.
    Ответ написан
    2 комментария