Делал в свое время вычислительный модуль для питона на Си, из модуля передавал Си массивы в питон и там их отображал с помощью Matplotlib. В модуле реализовал питоновский
Buffer Protocol. Дальше в питоне получал такой объект от модуля и с помощью numpy.asarray() перегонял его в ndarray.
Если в основе Mat то же лежит обычный массив, то и для него можно реализовать Buffer Protocol похожим образом.
Как это делать с python boost не в курсе, я использовал Python C API.
Так же есть возможность непосредственно в модуле создавать numpy объекты, у numpy есть собственный numpy C API. Но с этим у меня опыта не было.
Более простых вариантов у меня нет.