преобразование неграмотного эквивалента Matlab в Python для более сложного сценария - PullRequest
1 голос
/ 30 сентября 2019

У меня проблема с преобразованием эквивалента Matlab в Python.

У меня проблема со следующей строкой кода:

 instance_contour = uint8(imgradient(instance_map) > 0);

Преобразование этой строки в Python является проблемой. В соответствии с методом, предложенным в imgradient matlab-эквиваленте в Python , я бы получал величину и угол отдельно, но я застрял, комбинируя их и сравнивая с целочисленным значением для получения нового результата. Я добавил полный код Matlab для справки:

instance_map = imread(fullfile(human_inst_root, [imname '.png']));
instance_contour = uint8(imgradient(instance_map) > 0);
imwrite(instance_contour, fullfile(output_root, [imname '.png']));
imwrite(instance_contour*255, fullfile(vis_output_root, [imname '.png']));

1 Ответ

0 голосов
/ 30 сентября 2019

Функции в MATLAB, которые могут возвращать несколько значений, будут выполняться только при указании нескольких переменных для хранения этих значений, например (из документации для imgradient):

[Gmag,Gdir] = imgradient(I)

Если вы укажете только одну возвращаемую переменную, например:

Gsomething = imgradient(I)

будет сохранено только first возвращаемое значение *, в данном случае это величина. Это то, что происходит в строке

instance_contour = uint8(imgradient(instance_map) > 0);

В логическом сравнении используется только одна (подразумеваемая) возвращаемая переменная, поэтому вы действительно сравниваете только величину градиента с 0,Нет необходимости пытаться объединить это с направлением.

* Вы можете выбрать , какую переменную вернуть, используя ~, чтобы пропустить значения, подобные _в Python. [~,Gdir] = imgradient(I) вернет только второе возвращаемое значение из функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...