# ofxCv: set and ROI

Hi !
I am having some strange behavior and I would like to have some lighting on how the function set behave towards roi…

Here is a part of my code

``````

for (int i = 0; i < mesure; i++){
for (int j = 0; j < octave; j++){
nonZeroMatrixBlock = matrixImg.countNonZeroInRegion(i*sizeMesure, j*sizeOctave, (i+1)*sizeMesure, (j+1)*sizeOctave);
if(nonZeroMatrixBlock>nonZeroThreshold){
matrixImg.setROI(i*sizeMesure, j*sizeOctave, (i+1)*sizeMesure, (j+1)*sizeOctave);
matrixImg.set(255.0);
matrixImg.resetROI();
sampleMatrix[i+j*mesure] = 1;
}
else{
matrixImg.setROI(i*sizeMesure, j*sizeOctave, (i+1)*sizeMesure, (j+1)*sizeOctave);
matrixImg.set(0.0);
matrixImg.resetROI();
sampleMatrix[i+j*mesure] = 0;
}
}
}

``````

I just go through an image and check for non-zero values.
If the value is higher than the threshold then I would like to set this ROI to 255.0 else to 0.
But does the function set take into account the ROI ?..

yes set() operates only on the ROI.

also, unless you are doing this for kicks … you can use the threshold() function instead

It seems my main problem was on the threshold ->“nonZeroThreshold” >.<
During the development I changed the sizeMesure/sizeOctave -> changing the number of pixels inside ROI -> changing the “nonZeroThreshold” value dramastically lol

After founding this I haven’t try the set() function again… I was testing by doing a setRoiFromPixels() lol

So, I’ll have to try the 3 methods:

• copying a matrix of zero or 255 with the setRoiFromPixels()
• set()
• threshold()

I hope to get the same results

Thank you very much for the threshold() trick!!
I’ll try it tonight
By the way, wouldn’t set() be faster than threshold()… (mustn’t change a lot still lol)

Indeed I use the sampleMatrix… the matrixImg is just to visualize it somehow…