vector of cv::Mat

vector of cv::Mat

本文关键字:Mat cv of vector      更新时间:2023-10-16

我的类包含cv::Mat图像向量。

class reconstructed_object
{
    private:
    std::vector<cv::Mat> raw_images;
    public:
    reconstructed_object();
    show_images();
}

在它的构造函数中,使用cv::imread("path")从我的硬盘中读取3个图像,并将其压入向量。

reconstructed_object::reconstructed_object()
{
    raw_images.push_back(cv::imread("path_1").clone());
    raw_images.push_back(cv::imread("path_2").clone());
    raw_images.push_back(cv::imread("path_3").clone());
}
void reconstructed_object::show_images()
{
    for (int i=0; i < raw_images.size(); i++)
    {
        cv::imshow("raw_image", raw_images[i]);
        cv::waitKey(1000);
    }
}

在阅读了所有关于深度复制的建议后,我使用了"克隆"方法。然而,矢量被来自"path_3"的图像填充了三倍。我如何在矢量中保存不同的图片?

尝试:

cv::imshow("raw_image"+ std::to_string(i), raw_images[i]);

我建议这个问题是你所有传递图像的窗口都有相同的名称。因此,向量的下一个成员只是重叠之前的图像。