Veo que ya te respondieron.
Bueno, sólo me gustaría agregar que usé tu ejercicio (adaptado a mis necesidades) para trabajar con pixeles, te dejo el código por si quieres revisarlo. Requiere que haya una imagen llamada "image.png" en la misma carpeta, y crea una imagen llamada "resultado.png", dónde se resaltan las células madres en blanco y el resto se pone de negro.
Código C++:
Ver original#include <SFML/Graphics.hpp>
#include <string>
using std::string;
sf::Image &cargarImagen(const string &filename)
{
sf::Image img;
img.LoadFromFile(filename);
return img;
}
void guardarImagen(const sf::Image &imagen, const string &filename)
{
imagen.SaveToFile(filename);
}
void procesarImagen(const sf::Image &imagen)
{
sf::Image resultado;
sf::Color blanco(255, 255, 255);
int x = imagen.GetWidth();
int y = imagen.GetHeight();
short arreglo[2000][2000] = {0};
resultado.Create(imagen.GetWidth(), imagen.GetHeight(), sf::Color(0, 0, 0, 255));
for(int i = 1; i < x-1; i++)
{
for(int j = 1; j < y-1; j++)
{
if(arreglo[i][j] == 0 && arreglo[i][j+1] == 0 && arreglo[i+1][j] == 0
&& arreglo[i+1][j+1] == 0)
{
sf::Color a1 = imagen.GetPixel(i, j);
sf::Color a2 = imagen.GetPixel(i, j+1);
sf::Color a3 = imagen.GetPixel(i+1, j);
sf::Color a4 = imagen.GetPixel(i+1, j+1);
// saturación de colores,
// Negro = 0, 0, 0, por ende,
// 240 de tu ejercicio = 15 en pixeles
// y 15 * 3 colores * 4 pixeles = 180
if((a1.r + a1.g + a1.b + a2.r + a2.g + a2.b +
a3.r + a3.g + a3.b + a4.r + a4.g + a4.b <= 180))
{
arreglo[i][j] = arreglo[i][j+1] = arreglo[i+1][j] = arreglo[i+1][j+1] = 1;
resultado.SetPixel(i, j, blanco);
resultado.SetPixel(i, j+1, blanco);
resultado.SetPixel(i+1, j, blanco);
resultado.SetPixel(i+1, j+1, blanco);
}
}
}
}
resultado.SaveToFile("resultado.png");
}
int main()
{
sf::Image imagen;
imagen.LoadFromFile("image.png");
procesarImagen(imagen);
return 0;
}