Задать вопрос
  • Где на практике применяются комплексные числа? В каких сферах 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 как задать строку с кириллицей?

    Тебе просто надо сохранить файл в нормальной 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 комментария
  • Почему обучение нейросети заканчивается Process finished with exit code -1073740791 (0xC0000409)?

    2ord
    @2ord
    Проверь расход памяти, раздела подкачки, места на диске.
    Добавь журналирование для отладки в критичных местах.
    Пропробуй отладку с помощью Process Monitor или аналогичных средств.
    Ответ написан
    Комментировать
  • Как удалить последнюю запятую в списке?

    Vindicar
    @Vindicar
    RTFM!
    Открой для себя метод str.join() и генераторные выражения
    ",".join( f"'{n}'" for n in glob.iglob(...) )
    Я надеюсь, в имени файла у тебя не попадётся апострофов.
    Ответ написан
    9 комментариев
  • Хочу написать функцию (python) по изменению какого элемента списка массивов(np.array) со списками, но выдает ошибку, как исправить?

    Vindicar
    @Vindicar
    RTFM!
    for a in self.weights a будет не индексами, а элементами списка. В твоём случае - массивами numpy. Аналогично
    for b in a: будет не индексами строк массива, а самими строками
    for c in b: будет не индексами столбцов, а значениями ячеек. Так что
    self.weights[a][b][c] получит вместо чисел-индексов массивы и сойдёт с ума.

    А вообще, то что ты пытаешься сделать, делается тривиальнейше.
    x = np.randint(-1000, 1000, size = (2, 3), dtype=np.float32)  # массив случайных чисел, две строки, три столбца
    x /= 100.0  # делим поэлементно на сто

    В список завернёшь сам, хотя я не понимаю почему список, а не еще одно измерение в массиве.
    Ответ написан
    Комментировать
  • Как достичь точности по времени при выводе чего либо в консоль?

    HemulGM
    @HemulGM Куратор тега Python
    Delphi Developer, сис. админ
    Код у тебя медленный. Замерь выполнение одной итерации цикла и всё увидишь
    Ответ написан
    3 комментария
  • Как подобным образом исказить текст? Какой инструмент можно использовать? И какие настройки инструмента?

    Нужно сделать ч/б градиент — очень узкую полоску ч-б-ч, которая задаст смещение:
    градиент
    62a8a683033d9929474320.png
    62a8a68adea7a790510091.png
    Полупрозрачно градиент над текстом, чтобы прикинуть расположение:62a8a53280c51446777320.jpeg
    Сохранить этот градиент как отдельный PSD файл.

    Затем применить фильтр - Distortion - Displace (Искажения - Смещение ?), где оставить горизонтальное 10, вертикальное в ноль.
    интерфейс фильтра
    62a8a61d1c5a4172429254.png
    И выбрать сохранённый файл с градиентом.

    Получится похоже:
    результат
    62a8a637eedff185771889.jpeg

    P.S. но лучше, наверное, это всё проделывать в векторе..
    Ответ написан
    2 комментария
  • Kак сгенерировать вопрос на основе нейросети?

    @dmshar
    Вы точно создали нейросеть? Сами?
    Вы точно понимаете как именно "кластеризация" сочетается с " выдачей ответа в текстовом формате"?
    Стесняюсь спросить, созданная вами нейросеть выдает свои сообщение по-английски потому что английский для вас родной?
    Если ваша нейросеть выдает не то, что вы ожидаете, то может у вас ошибка? Может стоит что-то исправить в созданной вами нейросети?
    Вы уверены, что " нейросеть не выдает ответ, а пишет, что в следующей таблице приведены результаты анализа полученных данных"? Вот так сама берет и пишет? Не вы составили так программу, что ей приходится это выводить, а нейросеть сама вышла из повиновения и придумала этот текст? Или все-таки он есть в вашем коде?
    Результата и мы не видим, поэтому говорить о том, что созданная вами программа "работает" как-то странно.
    А вот ваш вопрос "как исправить" вообще более чем странен. Что-бы исправить что-то в программе, надо ее (код программы) видеть. Мы же вашего кода не видим и не знаем. Как и не знаем даже на каком языке программирования он составлен. Так что в таких
    условиях получается, что вы автор - вам и исправлять.
    Ответ написан
    Комментировать
  • Как сделать изображение сине-жёлтым?

    в примерах изображения не двух-, а трёх-цветные.
    Верхнее красно-малиново-белое, нижнее сине-фиолетово-желтое.

    Уточните задачу — что на входе и что на выходе? Даётся ли пара картинок «до» и «после» как образец?
    Возможно, подойдёт cv2.LUT (color lookup table), пример.
    Ответ написан
    Комментировать
  • Почему float округляет до целого, не воспринимая экспоненты?

    Vindicar
    @Vindicar
    RTFM!
    float(i[0])
    Ты выбираешь нулевой (т.е. начальный) символ строки, и только его превращаешь в число, игнорируя остальные.
    Как следствие, у тебя '5.615780770566875e-5' обрезается до '5'.
    Как чаще всего и бывает, компьютер делает именно то, что ты просишь, а не то, что ты хочешь.
    Ответ написан
    2 комментария