I tried the following code to print all the white pixels of this binary image without success:
int Max_value = 255;
int Global_Threshold = 155;
rgb_Image = imread( "../Tests/Object/Object.jpg", CV_LOAD_IMAGE_COLOR); // Read the file
if(! rgb_Image.data ) // Check for invalid input
cout << "Could not open or find the image" << endl ;
//Convert to Grayscale.
cvtColor(rgb_Image, grayImage, CV_BGR2GRAY);
//Binarize the image with a fixed threshold.
threshold( grayImage, binImage, Global_Threshold, Max_Value, 0);
//Printing white pixels
for(int i = 0; i < 640; i++)
for(int j = 0; j < 480; j++)
if(255 == binImage.at<float>(i,j))
cout << binImage.at<float>(i,j) << endl;
cvtColor will create a uchar image, and threshold will keep the data format, so your binImage is made up of uchars, and not float's.
and keep in mind that comparing floats with
== is usually a bad idea (even when you work with floats), because of floating-point representation errors. You may end up having a matrix full of
254.9999999999, and never meet the