c ++ vector push_back不一致的行为

时间:2017-03-25 07:19:10

标签: opencv vector push-back

我推回相同类型的相等矩阵(A1 = B1,A2 = B2,A3 = B3)的两组(A = {A1,A2,A3},B = {B1,B2,B3})(CV_32FC) )在相同类型的两个不同向量(Va和Vb)中。当我比较成对的载体对的含量(Va [0]对比Vb [0],Va [1]对比Vb [1],Va [2]对比Vb [2])它们是不同的。这怎么可能?

代码说明:

A= imgs_lab_channels. 
Lab_channel_current_FG = Foreground image 
Lab_channel_current_BG = Background image
Lab_channel_current=Lab_channel_current_FG+Lab_channel_current_BG
push Lab channel_current into vector Lab_channels
So B=Lab_channels

我检查了

Lab_channel_current= imgs_lab_channels[i].

当我从向量A和B回读矩阵时,它们是不同的。

代码段:

std::vector<cv::Mat> imgs_lab_channels;
split(imgs_lab, imgs_lab_channels); 
std::vector<cv::Mat> Lab_channels;
cv::Mat Lab_channel_current_FG;
cv::Mat Lab_channel_current_BG;
cv::Mat Lab_channel_current;
for(int i = 0; i < 3; i++)
{
// FG_mask and BG_mask are 0-1 binary matrices of type 32FC1 
// and with same size as imgs_lab_channels. FG_mask and BG_mask
// select the Foreground and background respectively. Omitted for  
// sake of clarity

    Lab_channel_current_FG=imgs_lab_channels[i].mul(FG_mask);
    Lab_channel_current_BG=imgs_lab_channels[i].mul(BG_mask);
    // add the FG and the BG image
    Lab_channel_current=Lab_channel_current_FG+Lab_channel_current_BG;
    Lab_channels.push_back(Lab_channel_current);
}
for(int j=0;j<3;j++)
{
    temp2 = Lab_channels[j]-imgs_lab_channels[j];
    double min2, max2;
    cv::minMaxLoc(temp2, &min2, &max2);
    std::cout << "temp2 min,max="<< min2 << "," << max2 << std::endl;
}

0 个答案:

没有答案