我正在为计算机视觉项目编写图像操纵器。我决定在python中制作所有GUI,并在C ++中实现算法。 我的C ++ Image类具有toQImage函数,该函数应返回将在GUI中表示的结果。 问题是我无法使用Boost将QImage对象返回给python,从而导致一堆错误,并且无法意识到我在做什么错。
我已经阅读到在这种情况下,我应该使用return_value_policy:
BOOST_PYTHON_MODULE(image_manipulator) {
class_<Image, boost::noncopyable>("Image",no_init)
.def("toQImage", &Image::toQImage, return_value_policy<copy_const_reference>())
.def("height", &Image::height)
.def("width", &Image::width)
;
class_<JpegImage, bases<Image>, boost::noncopyable>("JpegImage",
init<char *>())
;
}
函数本身:
const QImage& Image::toQImage() {
return img; // const QImage& img = QImage();
}
它可以编译,但是在执行期间返回:
TypeError: No to_python (by-value) converter found for C++ type: QImage
我用Google搜索了问题,但建议使我更加困惑。欢迎使用变通方法和更简便的解决方案!