объединить прозрачное фоновое изображение в формате png с изображениями jpg, используя opencv_createsamples - PullRequest
0 голосов
/ 09 ноября 2018

В настоящее время я работаю над проектом, который состоит в обнаружении руки на данном изображении с помощью команд OpenCV, и из-за отсутствия положительных изображений я попытался создать их искусственно с помощью команды opencv_createsamples , фоновые изображения (или негативные изображения) имеют формат .jpg, а мой позитивный - формат .png с прозрачным фоном, ожидаемый результат должен быть примерно таким: enter image description here

но что я получил после выполнения этой команды:

opencv_createsamples -img pos2/img.png -bg bg2.txt -info info/info.lst -pnginput info -maxxangle 0.5 -maxyangle 0.5 -maxzangle 0.5 -num 405 где:

  1. img.png содержит руку с прозрачным фоном
  2. bg2.txt список негативных изображений jpg (или фона)
  3. info - это папка, в которой будут созданы все сэмплы.
  4. info.lst - это файл, который содержит путь к изображению, положение (я) и количество положительных изображений в каждом из них

было:

Как вы можете видеть, положительное изображение по-прежнему имеет белый фон, и прозрачность отсутствует, как и ожидалось (изображение маленькое, потому что оно 100x100, а положительное 50x50)

У меня вопрос, есть ли способ получить результат, аналогичный первому изображению, с помощью команды opencv_createsamples ?

спасибо за вашу помощь

1 Ответ

0 голосов
/ 09 ноября 2018

Я быстро просмотрел исходный код функции, которая (я думаю) используется:

https://github.com/opencv/opencv/blob/master/apps/createsamples/utility.cpp

Вы можете видеть, что каждый раз, когда imread называется вторым параметром, является IMREAD_GRAYSCALE. Это означает, что независимо от формата исходного изображения он всегда будет преобразован в оттенки серого. Если на изображении присутствует альфа-канал, он отбрасывается .

Так что я думаю, что, учитывая эту информацию, невозможно получить желаемый результат с помощью этой функции.

...