您好我使用以下代码来读取从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;
}
我究竟做错了什么;