本文整理汇总了C++中QuadTree::importer方法的典型用法代码示例。如果您正苦于以下问题:C++ QuadTree::importer方法的具体用法?C++ QuadTree::importer怎么用?C++ QuadTree::importer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QuadTree
的用法示例。
在下文中一共展示了QuadTree::importer方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main()
{
string fichier;
ImagePNG originale,compressee;
QuadTree arbre;
// fichier = "i.png";
// originale.charger(fichier);
/* cout << endl << "-------------------------------------------------" << endl;
cout << "Original :" << endl;
arbre.importer(originale);
arbre.afficher();
cout << endl << "-------------------------------------------------" << endl;
cout << "Sans perte :" << endl;
arbre.importer(originale);
arbre.compressionDelta(0);
arbre.afficher();
compressee = arbre.exporter();
compressee.sauver("zip-d000-"+fichier);
cout << endl << "-------------------------------------------------" << endl;
cout << "Delta=128 :" << endl;
arbre.importer(originale);
arbre.compressionDelta(128);
arbre.afficher();
compressee = arbre.exporter();
compressee.sauver("zip-d128-"+fichier);
cout << endl << "-------------------------------------------------" << endl;
cout << "Phi=4 :" << endl;
arbre.importer(originale);
arbre.compressionPhi(4);
arbre.afficher();
compressee = arbre.exporter();
compressee.sauver("zip-p004-"+fichier);
cout << endl << "-------------------------------------------------" << endl;
cout << "Phi=1 :" << endl;
arbre.importer(originale);
arbre.compressionPhi(1);
arbre.afficher();
compressee = arbre.exporter();
compressee.sauver("zip-p001-"+fichier);
*/
cout << endl << "-------------------------------------------------" << endl;
fichier = "pngs/16.png";
originale.charger(fichier);
cout << "Phi=7 :" << endl;
arbre.importer(originale);
arbre.compressionPhi(7);
arbre.afficher();
compressee = arbre.exporter();
compressee.sauver("zip-p001-16.png");
}
示例2: importer
//------------------------------------------------------------------------------
void QuadTree::importer(const ImagePNG & img)
{
/*On récupère la largeur de l'image sur laquelle on travaille utile pour savoir si on peut extraire
la couleur des pixels. Dans le cas de base length = 2 correspond a une image de 4 pixels */
int length = img.hauteur();
//On créé des QuadTree qui vont être embranchés
QuadTree *NW = new QuadTree;
QuadTree *NE = new QuadTree;
QuadTree *SE = new QuadTree;
QuadTree *SW = new QuadTree;
//Cas de base on travaille sur une image de 4 pixels
if(length == 2){
/* On crée la liaison entre les différents noeuds, ici les fils du QuadTree créé pointent sur
les racines des QuadTree créés */
_racine.fils[0] = &NW->_racine;
_racine.fils[1] = &SW->_racine;
_racine.fils[2] = &NE->_racine;
_racine.fils[3] = &SE->_racine;
// On créé la liaison dans l'autre sens de la précédente, on fait pointer les QuadTree créés sur leur père
NW->_racine.pere = &(_racine);
//On remplit la couleur des Quadtree, ceux si n'ont pas de fils il s'agit de feuilles
NW->_racine.rvb = img.lirePixel(0,0);
NE->_racine.pere = &(_racine);
NE->_racine.rvb = img.lirePixel(1,0);
SE->_racine.pere = &(_racine);
SE->_racine.rvb = img.lirePixel(1,1);
SW->_racine.pere = &(_racine);
SW->_racine.rvb = img.lirePixel(0,1);
//On stocke la couleur des 4 feuilles dans une vecteur
vector<Couleur> vecCol;
for(int i = 0; i <= 3; ++i){
vecCol.push_back(_racine.fils[i]->rvb);
}
//On remplit le noeud père des feuilles avec la couleur moyenne de celles-ci
_racine.rvb = moyenne(vecCol);
//Mise à jour de la taille, ici cas de base, on a 4 feuilles
_taille = 4;
}
else{
//Découpage de l'image en 4 sous images de taille égale
ImagePNG image0 = ImagePNG(length/2,length/2);
ImagePNG image1 = ImagePNG(length/2,length/2);
ImagePNG image2 = ImagePNG(length/2,length/2);
ImagePNG image3 = ImagePNG(length/2,length/2);
//Remplissage des images crées
for(int y = 0; y <= length/2 -1; ++y){
for(int x = 0; x <= length/2 -1; ++x){
image0.ecrirePixel(x,y,img.lirePixel(x,y));
image1.ecrirePixel(x,y,img.lirePixel(x,y+length/2));
image2.ecrirePixel(x,y,img.lirePixel(x+length/2,y));
image3.ecrirePixel(x,y,img.lirePixel(x+length/2,y+length/2));
}
}
/* On crée la liaison entre les différents noeuds, ici les fils du QuadTree créé pointent sur
les racines des QuadTree créés */
_racine.fils[0] = &(NW->_racine);
//On créé la liaison dans l'autre sens, pointant sur le père
NW->_racine.pere = &_racine;
//On importe la nouvelle image créé sur le nouveau quadtree (récursivité)
NW->importer(image0);
_racine.fils[1] = &(SW->_racine);
SW->_racine.pere = &_racine;
SW->importer(image1);
_racine.fils[2] = &(NE->_racine);
NE->_racine.pere = &_racine;
NE->importer(image2);
_racine.fils[3] = &(SE->_racine);
SE->_racine.pere = &_racine;
SE->importer(image3);
//On stocke la couleur des 4 feuilles dans une vecteur
vector<Couleur> vecCol;
for(int i = 0; i <= 3; ++i){
vecCol.push_back(_racine.fils[i]->rvb);
}
//Mise à jour couleur moyenne du noeud
_racine.rvb = moyenne(vecCol);
//Mise à jour de la taille, somme des tailles des fils du noeud
_taille = (NW->_taille) + (NE->_taille) + (SW->_taille) + (SE->_taille);
//Compression sans perte qu'on met en commentaire (pas ici)
/* for(int i = 0; i <= 2; ++i){
if(diff_lum(_racine.fils[i]->rvb, _racine.fils[i+1]->rvb) == 0){
//.........这里部分代码省略.........