使用Boost库将C ++ QImage对象“转换”为Python

时间:2019-05-26 01:55:00

标签: python c++ qt boost

我正在为计算机视觉项目编写图像操纵器。我决定在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搜索了问题,但建议使我更加困惑。欢迎使用变通方法和更简便的解决方案!

0 个答案:

没有答案