本文整理汇总了C++中Pila::Apilar方法的典型用法代码示例。如果您正苦于以下问题:C++ Pila::Apilar方法的具体用法?C++ Pila::Apilar怎么用?C++ Pila::Apilar使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Pila
的用法示例。
在下文中一共展示了Pila::Apilar方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main()
{
Pila<int> pila;
Pila<int> pila2;
pila.Apilar(1);
pila.Apilar(2);
pila.Apilar(3);
pila.Apilar(4);
pila.Apilar(5);
pila.Apilar(6);
pila2.Apilar(7);
pila2.Apilar(8);
//Invertirmos la pila
//pila.ConcatenarPila(pila2);
//pila.ImprimirPila();
//pila.ImprimirPila();
pila.InvertirPila();
pila.ImprimirPila();
}
示例2: doubleThresholding_c
void doubleThresholding_c (
unsigned char *src,
int cantFilas,
int cantColumnas,
int src_row_size
) {
int i;
int j;
Pila laPila;
int abc;
int ord;
unsigned char *pos;
vector<bool> aux(cantColumnas, true);
vector< vector<bool> > porRevisar(cantFilas, aux);
for(j = 0; j < cantColumnas; ++j){
porRevisar[0][j] = false; // Primer fila
porRevisar[cantFilas-1][j] = false; // Última fila
}
for(i = 1; i < cantFilas-1; ++i){
porRevisar[i][0] = false; // Primer columna
porRevisar[i][cantColumnas-1] = false; // Última columna
}
/// Operación con los píxeles
for(i = 1 ; i < cantFilas-1 ; i++){
for(j = 1 ; j < cantColumnas-1 ; j++){
pos = src + i*src_row_size + j; /// pos guarda la posición en la que uno está iterando
if ( porRevisar[i][j] && *pos == 0 ) porRevisar[i][j] = false; /// Si no fue revisado y es nulo lo marca como revisado
else if( porRevisar[i][j] && *pos == 200 ){ /// Si aún no fue revisado y es píxel fuerte
/// Chequea todos los píxeles vecinos, si son débiles los pone en la pila para procesarlos luego
/* 1 2 3 */
/* 4 X 6 */
/* 7 8 9 */
if( *(pos - src_row_size - 1) == 100 ) laPila.Apilar(i-1, j-1); /// Apila el pixel de la pos 1
if( *(pos - src_row_size) == 100 ) laPila.Apilar(i-1, j); /// Apila el pixel de la pos 2
if( *(pos - src_row_size + 1) == 100 ) laPila.Apilar(i-1, j+1); /// Apila el pixel de la pos 3
if( *(pos - 1) == 100 ) laPila.Apilar(i, j-1); /// Apila el pixel de la pos 4
if( *(pos + 1) == 100 ) laPila.Apilar(i, j+1); /// Apila el pixel de la pos 6
if( *(pos + src_row_size - 1) == 100 ) laPila.Apilar(i+1, j-1); /// Apila el pixel de la pos 7
if( *(pos + src_row_size) == 100 ) laPila.Apilar(i+1, j); /// Apila el pixel de la pos 8
if( *(pos + src_row_size + 1) == 100 ) laPila.Apilar(i+1, j+1); /// Apila el pixel de la pos 9
porRevisar[i][j] = false; /// Al fuerte lo marca como revisado
while( !laPila.EsVacia() ){ /// Mientras la pila no sea vacía opera todos los puntos
abc = laPila.AbcisaTope();
ord = laPila.OrdenadaTope();
pos = src + abc*src_row_size + ord;
laPila.SacarTope(); /// Saca al par ordenado ya operado
if(porRevisar[abc][ord]){
*pos = 200; /// Pinta fuerte al píxel
/// Revisa los vecinos y todos los débiles los agrega a la pila
if( *(pos - src_row_size - 1) == 100 ) laPila.Apilar(abc-1, ord-1);
if( *(pos - src_row_size) == 100 ) laPila.Apilar(abc-1, ord);
if( *(pos - src_row_size + 1) == 100 ) laPila.Apilar(abc-1, ord+1);
if( *(pos - 1) == 100 ) laPila.Apilar(abc, ord-1);
if( *(pos + 1) == 100 ) laPila.Apilar(abc, ord+1);
if( *(pos + src_row_size - 1) == 100 ) laPila.Apilar(abc+1, ord-1);
if( *(pos + src_row_size) == 100 ) laPila.Apilar(abc+1, ord);
if( *(pos + src_row_size + 1) == 100 ) laPila.Apilar(abc+1, ord+1);
porRevisar[abc][ord] = false; /// Lo marca como revisado
}
}
}
}
}
/// Por último, anula todos los débiles que sobrevivieron
for(i = 1 ; i < cantFilas-1 ; i++){
for(j = 1 ; j < cantColumnas-1 ; j++){
if( *(src + i*src_row_size + j) == 100 ) *(src + i*src_row_size + j) = 0;
}
}
}