• Как можно определить что цвет относится к синему (оттенки синего)?

    Цвет перевести в модель 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 комментария
  • Не создается срез в python. Ошибка TypeError?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Давайте я помогу перевести этот текст для вас:
    TypeError: slice indices must be integers or None or have an __index__ method

    - Ошибка Типов: индексы среза должны быть целочисленными значениями или None или должны поддерживать метод __index__.
    Теперь посмотрите внимательно на строку, где произошла ошибка:
    full_downtime = string[downtime_border1:downtime_border2]

    Где же у вас тут индексы среза?
    -- Вот они: downtime_border1 и downtime_border2
    Давайте посмотрим какие значения у вас могут принимать эти переменные:
    downtime_border1 = ''
    downtime_border2 = ''

    Неожиданно!
    Что это а тип? Это целые числа? - нет
    Это None? - Нет!
    У них есть метод __index__?
    А что, черт возьми, вы хотели этим сказать в своей программе?
    На лицо не понимание кода. Вам слеует немного поучить основы питона.
    Ответ написан
    5 комментариев
  • Как расчитать координаты точек для шестиугольника вписанного в круг?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    А мне нравится такое на комплексных числах считать. То же, что и с синусами, но элегантнее.
    Вот пример на питоне:
    from math import e, pi
    f=lambda c, r, n=3, fi0=0: [c+r*e**(1j*(2*pi/n*i+fi0)) for i in range(n)]

    Получим функцию f которая может рассчитать точки любого вписанного n-угольника:
    >>> f(c=250+250j, r=250)
    [(500+250j),
     (375+466.50635094610965j),
     (125.00000000000006+466.5063509461097j),
     250.00000000000003j,
     (124.99999999999989+33.49364905389041j),
     (374.99999999999983+33.49364905389024j)]

    А если надо обяательно кортежами, а не комплексными точками. то вот:
    >>> [(round(p.real), round(p.imag)) for p in f(c=250+250j, r=250, n=5, fi0=pi/2)]
    [(250, 500), (12, 327), (103, 48), (397, 48), (488, 327)]

    Тут, заметьте, пятиугольник, причем вершинкой вниз (при оси Y, направленной вниз).

    Чтобы было понятно как это работает...
    Представим, что центр окружности в нуле координат. Нам нужно 6 точек, смещенных относительно нуля на радиус под нужными углами: 0, 60, 120, 180, 240 и 300 градусов. В формулах мы. конечно используем радианы: pi - это 180 градусов.
    Чтобы повернуть единичный вектор на какой-то угол, нужно его просто домножить на e в степени мнимая единица, умноженная на угол. Поскольку единичный вектор на комплексной плоскости это просто 1, то его даже писать не надо. Просто возводим e в нужную степень и получаем нужный вектор в виде комплексного числа. Осталось его домножить на требуемый радиус (он при этом удлинится: был длиной 1, а станет r) и добавить к нему желаемый центр (тоже в виде комплексного числа, где реальная часть - X, а мнимая - Y).
    Вот и всё!
    Красота же?..

    Да, забыл сказать, что если нужно повернуть весь n-угольник на какой-то угол, то для этого есть там параметр fi0, который по умолчанию ноль.
    c - это координаты центра в комплексной форме. Например если X=30, а Y=40, то c=30+40j.
    n - это число вершин.
    r - радиус.
    И да, в javascript'е нет такого элегантного способа работать с комплексными числами, как в питоне. Но для js есть много библиотек для работы с комплексными числами. Будет не так компактно и красиво, как на питоне, но в целом всё точно так же в плане математики.

    UPD: Исправил функцию. Там скобочек не хватало, поэтому поворот на fi0 работал неверно. Теперь все как надо.
    Ответ написан
    6 комментариев
  • Как отсортировать произвольные точки так, чтобы при проведении линии через них последовательно получился многоугольник?

    Adamos
    @Adamos
    Банально-наколенный вариант: находим среднюю арифметическую координату, пересчитываем координаты всех точек в радиальные относительно этой средней, сортируем по углу (а при равенстве углов - по удаленности) - и соединяем в этом самом порядке.
    Ответ написан
    4 комментария
  • Как работает бинарный оператор & в python?

    Vindicar
    @Vindicar
    RTFM!
    Этот оператор может быть перегружен, а потому имеет разную семантику для разных типов данных.
    Для множеств этот оператор возвращает их пересечение.
    Ты можешь добавить поддержку этого оператора в свой класс, объявив магический метод __and__().
    Ответ написан
    2 комментария
  • Реально ли поменять bluetooth пароль на китайском приемнике?

    15432
    @15432
    Системный программист ^_^
    Разобрать, определить модель микроконтроллера, найти программатор под него, считать прошивку, провести реверс-инжиниринг и найти, где там пароль, поменять его, залить обратно программатором.

    За пару месяцев для вас вполне реально.
    Ответ написан
    3 комментария