Beispiel #1
0
void Imagen::blur(int k) {
    int i = 0;

    Pixel pixel_negro(0, 0, 0);

    Pixel2DContainer nuevo_pixels;

    Pixel1DContainer filaNegra(ancho(), pixel_negro);
    int iter = 0;
    while (iter < alto()) {
        nuevo_pixels.push_back(filaNegra);
        iter++;
    }

    int kVecCompletos = (2 * k - 1) * (2 * k - 1);
    while (i < alto()) {
        int j = 0;
        while (j < ancho()) {
            vector<Pixel> kVec = kVecinos(pixels, i, j, k);

            if(kVec.size() == kVecCompletos)
                nuevo_pixels[i][j] = promedio(kVec);
            else nuevo_pixels[i][j] = pixel_negro;

            j++;
        }

        i++;
    }

    pixels = nuevo_pixels;
}
Beispiel #2
0
vector<pair<int, int> > Imagen::posicionesMasOscuras() const {
    int colorMasOscuro = 255 * 3;

    vector<pair<int, int> > resultado;

    int i = 0;
    while (i < alto()) {
        int j = 0;
        while (j < ancho()) {
            Pixel estePixel = pixels[i][j];
            int colorPixel = estePixel.red() + estePixel.green() + estePixel.blue();

            if (colorPixel < colorMasOscuro) colorMasOscuro = colorPixel;

            j++;
        }
        i++;
    }


    i = 0;
    while (i < alto()) {
        int j = 0;
        while (j < ancho()) {
            Pixel estePixel = pixels[i][j];
            int colorPixel = estePixel.red() + estePixel.green() + estePixel.blue();

            if (colorPixel == colorMasOscuro) resultado.push_back(make_pair(i, j));
            j++;
        }
        i++;
    }

    return resultado;
}
Beispiel #3
0
void Imagen::guardar(std::ostream& os) const {
    os << alto() << " " << ancho() << " ";
    int i = 0;
    os << "[";
    while (i < alto()) {
        int j = 0;
        while (j < ancho()) {
            if(i != 0 || j != 0) os << ",";
            pixels[i][j].guardar(os);

            j++;
        }
        i++;
    }
    os << "]";
}
Beispiel #4
0
nkMenuTool* nkToolBar::insertarMenu(long id, const wxString& nombreMenu){
	nkMenuTool* un_menu = new nkMenuTool(this, id, nombreMenu,
		wxPoint(ALINEACION,alto()), 
		wxSize(nkMenuTool::ANCHO_TOOLBAR ,
		nkTool::LARGO_X_ANCHO_ICONO.GetHeight() + ALINEACION), 
		wxBORDER_STATIC );
	prv_listaMenus.Append(un_menu);
	return un_menu;
}
Beispiel #5
0
bool Imagen::operator==(const Imagen &otra) const {
    bool resultado = true;

    if(alto() != otra.alto() || ancho() != otra.ancho())
        resultado = false;
    else {
        int i = 0;
        while (i < alto()) {
            int j = 0;
            while (j < ancho()) {
                Pixel p1 = pixels[i][j];
                Pixel p2 = otra.obtenerPixel(i, j);
                if (p1.red() != p2.red() ||
                        p1.green() != p2.green() ||
                        p1.blue() != p2.blue())
                    resultado = false;
                j++;
            }
            i++;
        }
    }

    return resultado;
}