C++使用pybind11将vector转成python的list失败

我想使用pybind11将c++的类编译供python调用,其他方法都正常,就是在获取c++类中vector内容时失败。具体代码如下
C++代码如下

#include<string>
#include<vector>
#include<map>
#include<algorithm>
#include<pybind11/pybind11.h>
#include<pybind11/stl.h>

namespace py = pybind11;
using namespace std;

class MyClass
{
public:
    MyClass(){}

    void add_bi(int v) {
        this->bi.push_back(v);
    }
    //问题:vector返回到python时,无法转换为list对象
    py::list bi_array() {
        return py::cast(bi);
    }

    int get_index(int v) {
        vector<int>::iterator it = find(bi.begin(), bi.end(), v);
        if (it == bi.end()) {
            return -1;
        }
        else {
            return (&*it - &bi[0]); //返回vector下标值
        }
    }

    vector<int> bi;
};
PYBIND11_MAKE_OPAQUE(std::vector<int>);

PYBIND11_MODULE(ex, m) {

    py::class_<MyClass>(m, "MyClass")
        .def(py::init<>())
        .def_readwrite("bi", &MyClass::bi)
        .def("add_bi", &MyClass::add_bi)
        .def("get_index", &MyClass::get_index)
        .def("bi_array", &MyClass::bi_array);

}

图片说明
如图中所示,我的导入模块,调用其他方法如add_bi、get_index都是成功的,就是在得到C++类中的vector类型bi时失败,求助各位大神应该如何处理啊,非常感谢!

https://blog.csdn.net/fitzzhang/article/details/78988682