Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 793новые вакансии за сутки·93 582вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 282
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python16 845
  • Облачные технологии13 177
  • QA вакансии3 434
  • Backend вакансии2 084
  • Инженер данных1 685
  • Продакт-менеджер1 179

Разработка

  • Android1 845
  • iOS1 689
  • Fullstack вакансии960
  • AI вакансии950
  • Frontend вакансии736
  • Mobile вакансии44

По стеку

  • Go8 619
  • Java6 379
  • Node.js1 971
  • .NET1 640
  • Kotlin1 599
  • Rust1 443
  • PHP670
  • C#650
  • C++536

DevOps и инфраструктура

  • Kubernetes7 304
  • DevOps вакансии5 865
  • Linux-инфраструктура5 290
  • Terraform / IaC4 016
  • CI/CD2 991
  • Мониторинг и Observability1 734
  • SRE550
  • Кибербезопасность413

Аналитика и данные

  • Data Scientist1 054
  • Бизнес-аналитик868
  • Аналитик данных834
  • Системный аналитик134

Другие направления

  • Проджект-менеджер534
  • UI/UX дизайн130
  • Ручное тестирование14

По регионам

  • Вакансии в США45 360
  • Вакансии в Европе22 405
  • Вакансии в Канаде4 485
  • Работа в России3 897

По формату

  • Удалённые вакансии75 381
  • Релокация в США45 357
  • Гибридная работа12 010
  • Офисная работа7 029

По уровню

  • Senior вакансии42 335
  • Middle вакансии20 999
  • Junior вакансии6 760

Сейчас нанимают

Все компании
  • Wise194 вакансии
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab139 вакансий
  • Celonis40 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo19 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме OpenCVВсе вопросы
OpenCVJuniorКодинг

Что такое пороговая обработка (thresholding) в OpenCV и каковы её типы (binary, Otsu, adaptive)?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Thresholding преобразует градации серого в бинарное изображение. cv2.threshold() реализует глобальные методы (binary, Otsu), cv2.adaptiveThreshold() — локальные (mean, Gaussian) для неравномерного освещения.

Пример кода

import cv2
import numpy as np

img = cv2.imread("document.png", cv2.IMREAD_GRAYSCALE)
if img is None:
    raise FileNotFoundError("document.png not found")

# 1. Простой бинарный порог
_, binary = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
cv2.imwrite("out_binary.png", binary)

# 2. Метод Оцу — автоматический порог
otsu_thresh, otsu = cv2.threshold(
    img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU
)
print(f"Оцу выбрал порог: {otsu_thresh}")
cv2.imwrite("out_otsu.png", otsu)

# 3. Адаптивный порог (Mean)
adaptive_mean = cv2.adaptiveThreshold(
    img,
    255,
    cv2.ADAPTIVE_THRESH_MEAN_C,
    cv2.THRESH_BINARY,
    blockSize=11,  # нечётное число, > 1
    C=2            # вычитаемая константа
)
cv2.imwrite("out_adaptive_mean.png", adaptive_mean)

# 4. Адаптивный порог (Gaussian) — рекомендуется
adaptive_gauss = cv2.adaptiveThreshold(
    img,
    255,
    cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
    cv2.THRESH_BINARY,
    blockSize=11,
    C=2
)
cv2.imwrite("out_adaptive_gauss.png", adaptive_gauss)

# Перед Оцу полезно размыть изображение:
blurred = cv2.GaussianBlur(img, (5, 5), 0)
_, otsu_blur = cv2.threshold(
    blurred, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU
)
cv2.imwrite("out_otsu_blur.png", otsu_blur)

Что такое пороговая обработка

Пороговая обработка (thresholding) — преобразование изображения в оттенках серого в бинарное (чёрно-белое) изображение путём сравнения каждого пикселя с пороговым значением. Используется для выделения объектов, подготовки масок, OCR и сегментации. В OpenCV за это отвечают две функции: cv2.threshold() и cv2.adaptiveThreshold().

Глобальные методы — cv2.threshold()

Единственный порог применяется ко всему изображению:

  • cv2.THRESH_BINARY — пиксель > thresh → maxval, иначе 0.
  • cv2.THRESH_BINARY_INV — инверсия предыдущего.
  • cv2.THRESH_TRUNC — пиксель > thresh → thresh, иначе оставить.
  • cv2.THRESH_TOZERO — пиксель ≤ thresh → 0, иначе оставить.
  • cv2.THRESH_OTSU — автоматический подбор порога методом Оцу (межклассовая дисперсия максимальна). Передаётся как флаг совместно с другим: cv2.THRESH_BINARY + cv2.THRESH_OTSU. Значение thresh в этом случае игнорируется — OpenCV вычисляет его сам.

Адаптивный порог — cv2.adaptiveThreshold()

Для каждого пикселя порог вычисляется локально в окне blockSize × blockSize. Решает проблему неравномерного освещения:

  • cv2.ADAPTIVE_THRESH_MEAN_C — порог = среднее окна минус константа C.
  • cv2.ADAPTIVE_THRESH_GAUSSIAN_C — порог = взвешенное среднее (гауссово ядро) минус C. Лучше подавляет шум.

Когда что использовать

  • Равномерное освещение, контрастный объект → THRESH_BINARY с ручным порогом или THRESH_OTSU.
  • Документы, сканы с тенями → ADAPTIVE_THRESH_GAUSSIAN_C.
  • Биомедицинские изображения с переменным фоном → адаптивный порог с подобранным blockSize.
  • Быстрое прототипирование → Оцу, т.к. не требует ручного подбора порога.

Подводные камни

  • Оцу плохо работает на многомодальных гистограммах — если объектов несколько типов яркости, метод даёт субоптимальный порог.
  • blockSize должен быть нечётным и >1 — при чётном значении OpenCV выбросит исключение.
  • Константа C может быть отрицательной — если фон ярче объекта, C со знаком минус сдвигает порог вверх.
  • Шум усиливается адаптивным порогом — без предварительного размытия (GaussianBlur) адаптивный метод выделяет каждую шумовую крапинку.
  • Изображение должно быть grayscale — передача BGR-изображения в threshold даёт либо ошибку, либо неожиданный результат.
  • THRESH_OTSU игнорирует переданный порог — разработчики иногда передают 127 и удивляются, почему результат другой; правильно передавать 0.
  • Малый blockSize даёт шум, большой — теряет детали — выбирайте blockSize ≈ размер наименьшей значимой детали изображения.
  • Адаптивный порог медленнее глобального — при обработке видео в реальном времени профилируйте; иногда быстрее обесцветить + Оцу.

Частые вопросы на собеседовании

  • Что такое OpenCV и каковы его основные области применения?
  • Как преобразовать цветное изображение в оттенки серого в OpenCV?
  • В каких data/AI-задачах OpenCV даёт реальный выигрыш, а где лучше выбрать другой инструмент или более простой pipeline?
  • Как OpenCV представляет цветные изображения и что такое порядок BGR vs RGB?

Типичные ошибки

  • Объяснять thresholding methods только синтаксисом без shape, dtype, состояния или режима выполнения.
  • Игнорировать leakage, воспроизводимость, пустые входы и скрытые копии данных.
  • Не проверять production-симптомы: latency, память, ретраи, дрейф качества и несовпадение версий.

Что проверяет интервьюер

  • Может ли связать thresholding methods с реальным контрактом входов и выходов.
  • Упоминает ли тесты, метрики, reproducibility и диагностику ошибок.
  • Видит ли различие между demo-кодом в ноутбуке и production-пайплайном.

Как вы знаете этот вопрос?

Проверить себя по теме OpenCV →

Источники

  • https://docs.opencv.org/4.x/d7/d4d/tutorial_py_thresholding.html
Следующий вопрос→Что такое OpenCV и каковы его основные области применения?

Связанные темы

OpenCVdata-aidata-processingperformance-debugging