|
|
|
|
128
|
|
128
|
|
129
|
El proyecto en el que trabajarás hoy contiene la función `cropSwap` que implementa la funcionalidad de intercambiar los píxeles contenidos en dos rectángulos congruentes dentro de una imagen. Su prototipo es:
|
129
|
El proyecto en el que trabajarás hoy contiene la función `cropSwap` que implementa la funcionalidad de intercambiar los píxeles contenidos en dos rectángulos congruentes dentro de una imagen. Su prototipo es:
|
130
|
|
130
|
|
131
|
-```
|
|
|
132
|
-void ImageScrambler::cropSwap(QImage &img, int x0, int y0, int x1, int y1, int width, int height );
|
|
|
133
|
-```
|
|
|
|
|
131
|
+`void ImageScrambler::cropSwap(QImage &img, int x0, int y0, int x1, int y1, int width, int height );`
|
134
|
|
132
|
|
135
|
Sus parámetros son:
|
133
|
Sus parámetros son:
|
136
|
* `img`: referencia a la imagen que se desea modificar (un objeto de clase `QImage`)
|
134
|
* `img`: referencia a la imagen que se desea modificar (un objeto de clase `QImage`)
|
|
|
|
|
139
|
|
137
|
|
140
|
Por ejemplo, si deseamos intercambiar los píxeles de la mitad superior e inferior de una imagen *P* de ancho 100 y alto 150, invocamos la función así:
|
138
|
Por ejemplo, si deseamos intercambiar los píxeles de la mitad superior e inferior de una imagen *P* de ancho 100 y alto 150, invocamos la función así:
|
141
|
|
139
|
|
142
|
-```
|
|
|
143
|
-cropSwap(P, 0, 0, 0, 75, 100, 75 );
|
|
|
144
|
-```
|
|
|
|
|
140
|
+`cropSwap(P, 0, 0, 0, 75, 100, 75 );`
|
145
|
|
141
|
|
146
|
|
142
|
|
147
|
----
|
143
|
----
|
|
|
|
|
168
|
|
164
|
|
169
|
####Instrucciones
|
165
|
####Instrucciones
|
170
|
|
166
|
|
171
|
-1) Carga a QtCreator el proyecto `ImageScrambler` haciendo doble "click" en el archivo `ImageScrambler.pro` en el directorio `Documents/eip/Recursion-ImageScrambler` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/recursion-imagescrambler` para descargar la carpeta `Recursion-ImageScrambler` a tu computadora.
|
|
|
|
|
167
|
+1. Carga a `QtCreator` el proyecto `ImageScrambler`. Hay dos maneras de hacer esto:
|
172
|
|
168
|
|
173
|
-2) El código que te proveemos crea la interfaz de la Figura 9.
|
|
|
|
|
169
|
+ * Utilizando la máquina virtual: Haz doble “click” en el archivo `ImageScrambler.pro` que se encuentra en el directorio `/home/eip/labs/recursion-imagescrambler` de la máquina virtual.
|
|
|
170
|
+ * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/recursion-imagescrambler` para descargar la carpeta `recursion-imagescrambler` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `ImageScrambler.pro`.
|
174
|
|
171
|
|
175
|
----
|
|
|
176
|
-
|
|
|
177
|
-![figure9.png](images/figure9.png)
|
|
|
|
|
172
|
+2. El código que te proveemos crea la interfaz de la Figura 9.
|
178
|
|
173
|
|
179
|
-**Figura 9.** Interfaz del proyecto `Image Scrambler`.
|
|
|
180
|
-
|
|
|
181
|
----
|
|
|
|
|
174
|
+ ---
|
182
|
|
175
|
|
183
|
-El botón que dice `Scramble Image` se programó para que invoque una función llamada `ScrambleFilter`.
|
|
|
|
|
176
|
+ ![figure9.png](images/figure9.png)
|
184
|
|
177
|
|
185
|
-3) Completa la función `ScrambleFilter` contenida en el archivo `Filter.cpp` de modo que implemente el algoritmo recursivo de revolver imágenes. La función tiene el siguiente formato:
|
|
|
|
|
178
|
+ **Figura 9.** Interfaz del proyecto `Image Scrambler`.
|
186
|
|
179
|
|
187
|
- ```cpp
|
|
|
188
|
-QImage ImageScrambler::ScrambleFilter(QImage image, int N, int sx, int sy, int width, int height);
|
|
|
189
|
- ```
|
|
|
|
|
180
|
+ ---
|
190
|
|
181
|
|
|
|
182
|
+ El botón que dice `Scramble Image` se programó para que invoque una función llamada `ScrambleFilter`.
|
191
|
|
183
|
|
192
|
-4) Baja la imagen contenida en http://i.imgur.com/ZiJ61Gk.png para que valides la función que implementaste.
|
|
|
|
|
184
|
+3. Completa la función `ScrambleFilter` contenida en el archivo `Filter.cpp` de modo que implemente el algoritmo recursivo de revolver imágenes. La función tiene el siguiente formato:
|
|
|
185
|
+ `QImage ImageScrambler::ScrambleFilter(QImage image, int N, int sx, int sy, int width, int height);`
|
|
|
186
|
+
|
|
|
187
|
+4. Baja la imagen contenida en http://i.imgur.com/ZiJ61Gk.png para que valides la función que implementaste.
|
193
|
|
188
|
|
194
|
---
|
189
|
---
|
195
|
|
190
|
|