Je travaille sur une affectation des devoirs pour un programme de rétrécissement de l'image en C ++. Ma photo est représentée par un tableau 2D de pixels; Chaque pixel est un objet avec des membres "rouge", "vert" et "bleu". Pour résoudre le problème, j'essaie d'accéder au tableau 2D un bloc à la fois, appelez une fonction qui trouve la valeur RGB moyenne de chaque bloc et ajoute un nouveau pixel à une matrice d'image plus petite. La taille de chaque bloc (ou facteur d'échelle) est entrée par l'utilisateur. p>
À titre d'exemple, imaginez un tableau 2D de 100 points comme MyARRAY [10] [10]. Si l'utilisateur saisit un facteur de rétrécissement de 3, je devrais éclairer des matrices de taille 3 de la taille 3 par 3. Je n'ai pas à rendre compte du débordement, donc dans cet exemple, je peux ignorer la dernière ligne et la dernière colonne. p>
P>
J'ai la plupart du programme écrit, y compris la fonction pour trouver la couleur moyenne. Je suis confus avec comment traverser le tableau 2D. Je sais comment faire glisser une matrice 2D séquentiellement (une ligne à la fois), mais je ne sais pas comment obtenir de petits carrés dans un tableau. p>
Toute aide serait grandement appréciée! P>
3 Réponses :
Vous pouvez utiliser deux boucles imbriquées un pour X et un pour Y et déplacer le point de départ de ces boucles sur l'image. Comme il s'agit de devoirs, je ne mette aucun code, mais vous devriez pouvoir y travailler. P>
Voici comment vous traversez un tableau en C ++:
for(i=0; i < m; i++) { for(j=0; j < n; j++) { // do something with myArray[i][j] where i represents the row and j the column } }
J'ai passé plusieurs heures à travailler sur cette fonction (à la fois sur l'ordinateur et sur papier). Je suis assez certain que j'ai besoin de cinq variables à parcourir - la normale I et J, plus Xstart, Ystart et l'entrée d'utilisateur Blocksize. J'ai vraiment du mal à comprendre quand et comment mettre à jour les variables.
Quelque chose comme ça devrait fonctionner: largeur code> est la largeur entière,
block_width code> est la longueur de vos carrés bleus sur le diagramme p> p>
Salut pubby, je ne suis pas sûr que si j'ai traduit ce problème, mais je suis entré dans le code suivant pour voir si je pouvais obtenir le tableau 2D à imprimer correctement en fonction de votre fonction, et il semble que ce ne soit accéder aux trois premières colonnes toutes les trois premières colonnes. descente.
Agréable! Il travaille surtout, bien que cela dépend de la limite du tableau en ce moment et d'imprimer des adresses, mais je peux certainement travailler avec elle. Merci beaucoup!