I have an RGB image that i converted to HSV and my goal is to set every pixel that doesn't meet a certain hue value (100) to black. So H = S = V = 0.
I have this code: (frame3 is the HSV Mat image, hue = 100)
for (int i = 0; i<frame3.rows; i++)
{
for (int j = 0; j<frame3.cols; j++)
{
Vec3b hsv = frame3.at<Vec3b>(i, j);
int H = hsv.val[0]; //hue
int S = hsv.val[1]; //saturation
int V = hsv.val[2]; //value
if (H != hue) {
H = 0;
S = 0;
V = 0;
}
}
}
imshow("Processed Hue", frame3);
}
But when i run it nothing happens..the image stays the same. When i tried printing out the hsv.val[0] values to the console, i got letters and not numbers.. so i think that kind of points to where the problem is but i still don't know how to fix it.
Any help would be greatly appreciated! Thanks!
You can:
mask
where H channel equals 100, regardless the values of S,V channels (withinRange
)frame3
to zero according to the mask (withsetTo
)Something like:
To keep your code structure, you need to modify the actual value, not a copy of the value. You can do that keeping a reference to the value: