Всем привет знатоки, вообщем есть функция которую я использую через Python Boost, мне нужно в Python передать OpenCV Mat, при попытке сделать это на прямую boost выдает TypeError: No to_python (by-value) converter found for C++ type: cv::Mat, что логично тк Python не использует ndarray для изображений.
#include <iostream>
#include <opencv2/highgui.hpp>
#include "opencv2/cudawarping.hpp"
#include <boost/python.hpp>
using namespace std;
using namespace cv;
Mat gpuResize(string path, int maxwidth, int height)
{
Mat inputCpu = imread(path, IMREAD_COLOR);
cuda::GpuMat input(inputCpu);
cuda::GpuMat output;
cuda::resize(input, output, Size(maxwidth, height), 0, 0, INTER_LINEAR);
Mat outputCpu;
output.download(outputCpu);
// PyObject* ret = toNDArray(outputCpu);
return outputCpu;
}
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(cvcuda)
{
using namespace boost::python;
def("gpuResize",gpuResize);
}
from cvcuda import gpuResize
path = '/home/alenorze/Workspace/Current/hair/backend/test_data/0e6303c4-0b29-457e-ab74-ac2d1cfb1ecf.jpeg'
maxwidth = 650
height = 500
print(gpuResize(path, maxwidth, height))
Мне нужно простое решение, все конвертеры в десятки тысяч строк устарели, и их сложно запустить. Заранее спасибо за помощь.