2

您好我正在使用以下代码读取从 cv::Mat 派生的 Image 类。然后我想将对象传递给一个函数,在该函数中我将它直接传递给一个指向 cv::Mat 的智能指针向量。这样,我应该避免对象切片。然而事实并非如此。这个例子相对于真实版本有点简化。

class Image : public cv::Mat {

public:
    Image(cv::Mat m) : cv::Mat(m)  {}
    Image() : cv::Mat() {}

    std::string labelGen;
    int labelNum;
};

std::shared_ptr<cv::Mat> getImage(char *readPath) {

    std::shared_ptr<Image> i(new Image(cv::imread(readPath, 0)));
    i->labelGen = "String";
    i->labelNum = 5;

    return i;
}

std::vector<std::shared_ptr<cv::Mat>> getVectors() { 


    std::vector<std::shared_ptr<cv::Mat>> v;
    v.push_back(getImage("path/path.jpg"));

    return v;
}

我到底做错了什么;

4

0 回答 0