[英]How to pass cv::mat objects from a python module to a c++ function and give back returned object which is type cv::mat?
我尝试使用Django启动一个项目,其中一部分是显示一些图像。 您可能知道,c ++比python快。 因此,我编写了一个c ++函数,该函数接收两个Mat类型的输入,并对它们进行一些预处理,最后返回一个cv :: mat变量作为其输出。
我想在我的python模块中调用此函数,并从我的python代码中发送两个图像作为输入参数,并在django项目中显示c ++函数的结果。
我试图用ctypes.CDLL调用我的c ++函数,ctypes使用简单的函数,但是为此c ++代码提供了内存错误。
这是我的C ++函数:
extern "C" Mat watermark2(Mat source_img, Mat logo)
{
// Simple watermark
double alpha = 0.5;
int width = logo.size().width;
int height = logo.size().height;
int x_pos = rand() % (source_img.size().width - width);
int y_pos = rand() % (source_img.size().height - height);
cv::Rect pos = cv::Rect(x_pos, y_pos, width, height);
addWeighted(source_img(pos), alpha, logo, 1 - alpha, 0.0, source_img(pos));
return source_img;
}
如您所见,这是一个简单的函数,不会占用大量内存。 我测试了一些非常小的图片,但看到了相同的错误。
我在网上进行了大量搜索,找到了一些有关为Python包装C / C ++的说明。 但我不确定它能对我有帮助。
因为我是Django的新手,有人可以帮助我如何从我的python代码(我有两个带有c ++函数的图像)进行协商以对图像进行一些操作,然后将返回的输出保存在Django中吗?
也许考虑使用Boost-Python库在Python和C ++之间进行接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.