Solucion ejercicio informatica
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#define ancho 512 //ancho de la imagen
#define alto 512 //alto de la imagen
//Carga en la matriz la imagen dada
void dame_matriz(unsigned char matriz[alto][ancho], IplImage *imagen);
//Muestra la imagen cargada en la matriz en pantalla
void muestra_imagen(unsigned charmatriz[alto][ancho]);
void negativo(unsigned char matriz[alto][ancho],unsigned char destino[alto][ancho]);
void especular(unsigned char matriz[alto][ancho],unsigned char destino[alto][ancho]);
void invertida(unsigned char matriz[alto][ancho],unsigned char destino[alto][ancho]);
void girar_derecha(unsigned char matriz[alto][ancho],unsigned char destino[alto][ancho]);
void girar_izquierda(unsigned charmatriz[alto][ancho],unsigned char destino[alto][ancho]);
void zoom(unsigned char matriz[alto][ancho],unsigned char destino[alto][ancho]);
void main(void)
{ unsigned char matriz1[alto][ancho];
unsigned char matriz2[alto][ancho];
unsigned char destino[alto][ancho];
IplImage *imagen1 = cvLoadImage("lena.jpg",0);
IplImage *imagen2 = cvLoadImage("baboon.jpg",0);dame_matriz(matriz1,imagen1);
dame_matriz(matriz2,imagen2);
muestra_imagen(matriz1);
muestra_imagen(matriz2);
negativo(matriz1,destino);
muestra_imagen(destino);
especular(matriz1,destino);
muestra_imagen(destino);
girar_derecha(matriz1,destino);
muestra_imagen(destino);
girar_derecha(matriz1,destino);
muestra_imagen(destino);
zoom(matriz1,destino);muestra_imagen(destino);
// ---------------COMPLETAR -----------------------------
}
void dame_matriz(unsigned char matriz[alto][ancho], IplImage *imagen){
IplImage *copia;
int i,j,k=0;
copia = cvCloneImage(imagen);
for(i=0;i<alto;i++)
for(j=0;j<ancho;j++)
matriz[i][j]=copia->imageData[k++];
}
void muestra_imagen(unsigned charmatriz[alto][ancho]){
int i,j,k=0;
IplImage* img = cvCreateImage(cvSize(512,512), 8, 1);
for(i=0;i<alto;i++)
for(j=0;j<ancho;j++)
img->imageData[k++]=matriz[i][j];
cvNamedWindow("Imagen:",1);
cvShowImage("Imagen:",img);
cvWaitKey();
cvDestroyWindow("Imagen:");
cvReleaseImage(&img);
}
void negativo(unsigned char matriz[alto][ancho],unsigned chardestino[alto][ancho]){
int i,j;
for(i=0;i<=511;i++){
for(j=0;j<=511;j++)
destino[i][j]=255-matriz[i][j];
}
}
void especular(unsigned char matriz[alto][ancho],unsigned char destino[alto][ancho]){
int i,j;
for(i=0;i<=511;i++){
for(j=0;i<=511;j++)
destino[i][j]=matriz[i][511-j];}
}
void invertida(unsigned char matriz[alto][ancho],unsigned chardestino[alto][ancho]){
int i,j;
for(i=0;i<=511;i++){
for(j=0;i<=511;j++)
destino[i][j]=matriz[511-i][j];}
}
void girar_derecha(unsigned char matriz[alto][ancho],unsigned char destino[alto][ancho]){
int i,j;
for(i=0;i<=511;i++){
for(j=0;i<=511;j++)
destino[i][j]=matriz[511-j][511-i];}
}
void girar_izquierda(unsigned char matriz[alto][ancho],unsigned chardestino[alto][ancho]){
int i,j;
for(i=0;i<=511;i++){
for(j=0;i<=511;j++)
destino[i][j]=matriz[511-i][511-j];}
}
void zoom(unsigned char matriz[alto][ancho],unsigned char destino[alto][ancho]){
int i,j;
for(i=0;i<=511;i++){
for(j=0;i<=511;j++)
destino[i][j]=matriz[2*i][2*j];}
}
#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>#include <highgui.h>
#define ancho 512 //ancho de la imagen
#define alto 512 //alto de la imagen
//Carga en la matriz la imagen dada
void dame_matriz(unsigned char matriz[alto][ancho], IplImage *imagen);
//Muestra la imagen cargada en la matriz en pantalla
void muestra_imagen(unsigned char matriz[alto][ancho]);
void negativo(unsigned char matriz[alto][ancho],unsigned char...
Regístrate para leer el documento completo.