Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How to get values of a Matrix which are non zero

I am translating some matlab code to c++ using opencv. I want to get the values of a Matrix which satisfies a condition. I created a mask for this and when I apply it to the original Matrix I get the same size of the original matrix but with 0 values which are not there in the mask. But my question is how can I get only the values that are non-zero in the matrix and assign it to a different matrix.

My matlab code is:

 for i= 1:size(no,1)
        mask= s==d(i);
        op = orig(mask, :); //op only contains the values from the orig matrix which are in the mask. So orig size and op size is not the same
.....
end

The c++ translation that I have now is:

for (int i=0; i<n.rows;i++)
        {
            Mat mask;
              compare(labels,i,mask,CMP_EQ);
               Mat op;
              orig.copyTo(op,mask); //Here the orig size and the op size is always same but values which are not in the mask are 0
}

So, how can I create a matrix which only has the values that the mask satisfies???

How to get values of a Matrix which are non zero

I am translating some matlab code to c++ using opencv. I want to get the values of a Matrix which satisfies a condition. I created a mask for this and when I apply it to the original Matrix I get the same size of the original matrix but with 0 values which are not there in the mask. But my question is how can I get only the values that are non-zero in the matrix and assign it to a different matrix.

My matlab code is:

 for i= 1:size(no,1)
        mask= s==d(i);
labels==i;
        op = orig(mask, :); //op only contains the values from the orig matrix which are in the mask. So orig size and op size is not the same
.....
end

The c++ translation that I have now is:

for (int i=0; i<n.rows;i++)
        {
            Mat mask;
              compare(labels,i,mask,CMP_EQ);
               Mat op;
              orig.copyTo(op,mask); //Here the orig size and the op size is always same but values which are not in the mask are 0
}

So, how can I create a matrix which only has the values that the mask satisfies???

How to get values of a Matrix which are non zero

I am translating some matlab code to c++ using opencv. I want to get the values of a Matrix which satisfies a condition. I created a mask for this and when I apply it to the original Matrix I get the same size of the original matrix but with 0 values which are not there in the mask. But my question is how can I get only the values that are non-zero in the matrix and assign it to a different matrix.

My matlab code is:

 for i= 1:size(no,1)
        mask= labels==i;
        op = orig(mask, :); //op only contains the values from the orig matrix which are in the mask. So orig size and op size is not the same
.....
end

The c++ translation that I have now is:

for (int i=0; i<n.rows;i++)
        {
            Mat mask;
              compare(labels,i,mask,CMP_EQ);
               Mat op;
              orig.copyTo(op,mask); //Here the orig size and the op size is always same but values which are not in the mask are 0
}

So, how can I create a matrix which only has the values that the mask satisfies???