Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Inteligencia Artificial II
Pgina 1
Contenido
Inteligencia Artificial II
Pgina 2
Las siguientes lnea de cdigo que se van a mostrar, la cual, cada lnea sirve para
completar el procedimiento de extraccin de los canales de los colores bsicos
RGB de una imagen.
1.- En este primer paso lo que haremos es declarar tres arreglos bidimensionales
de enteros, las cuales van a tener un tamao de 1000 x 1000, llamados rRed,
gGreen y bBlue en este caso, en estas variables almacenaremos los tres colores
bsicos de la imagen la cual sern extrados por los canales, mediante un
recorrido con ciclos for en la imagen.
Inteligencia Artificial II
Pgina 3
2.- En el siguiente paso lo que haremos es declarar una variable de tipo string
llamado imagenSRC, a esta variable le vamos a asignar el nombre de la imagen,
la cual este va ser ledo como entrada desde consola.
4.- Una vez declarados todas estas variables vamos a recorrer cada parte de la
imagen en dos ciclos for, la cual va ser renglones y columnas. En este recorrido lo
que estamos haciendo el extraer los colores bsicos de la imagen RGB. Cada
canal se recorre y esta informacin obtenida del canal se est guardando en los
Inteligencia Artificial II
Pgina 4
5.- Para dar salida en ventana lo que se obtuvo de los canales haremos lo
siguiente.
Inteligencia Artificial II
Pgina 5
6.- En las instrucciones anteriores lo que se est haciendo es darle salida a los
resultados que se obtuvieron de los canales de imagen original. En estas ventanas
sacaremos 4 imgenes las cuales una de ellas es la original y las dems son
imgenes las cuales les fue asignado en valor que se obtuvo de los tres canales
de la imagen original.
Inteligencia Artificial II
Pgina 6
Inteligencia Artificial II
Pgina 7
Inteligencia Artificial II
Pgina 8
Inteligencia Artificial II
Pgina 9
CODIGO COMPLETO.
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int rRed[1000][1000];
int gGreen[1000][1000];
int bBlue[1000][1000];
int main(int argc, char **argv)
{
string imagenSRC;
cout << "\n Nombre de la Imagen: ";
cin >> imagenSRC;
cv::Mat
cv::Mat
cv::Mat
cv::Mat
cv::Mat
imageOriginal=cv::imread(imagenSRC);
imageCopiaRed=cv::imread(imagenSRC);
imageCopiaGreen=cv::imread(imagenSRC);
imageCopiaBlue=cv::imread(imagenSRC);
imageCopia_Promediada=cv::imread(imagenSRC);
for(int i=0;i<imageOriginal.rows;i++){
for(int j=0;j<imageOriginal.cols;j++){
rRed[i][j]=imageOriginal.at<cv::Vec3b>(i,j)[0];
gGreen[i][j]=imageOriginal.at<cv::Vec3b>(i,j)[2];
bBlue[i][j]=imageOriginal.at<cv::Vec3b>(i,j)[1];
imageCopiaRed.at<cv::Vec3b>(i,j)[2]=rRed[i][j]; //rRed
imageCopiaRed.at<cv::Vec3b>(i,j)[0]=0; //bBlue
imageCopiaRed.at<cv::Vec3b>(i,j)[1]=0;//gGreen
imageCopiaGreen.at<cv::Vec3b>(i,j)[2]=0; //rRed
imageCopiaGreen.at<cv::Vec3b>(i,j)[0]=0; //bBlue
imageCopiaGreen.at<cv::Vec3b>(i,j)[1]=gGreen[i][j];//gGreen
imageCopiaBlue.at<cv::Vec3b>(i,j)[2]=0; //rRed
imageCopiaBlue.at<cv::Vec3b>(i,j)[0]=bBlue[i][j]; //bBlue
imageCopiaBlue.at<cv::Vec3b>(i,j)[1]=0;//gGreen
Inteligencia Artificial II
Pgina 10
}
}
namedWindow(
namedWindow(
namedWindow(
namedWindow(
imshow(
imshow(
imshow(
imshow(
"Lenna
"Lenna
"Lenna
"Lenna
"Lenna
"Lenna
"Lenna
"Lenna
Original", CV_WINDOW_AUTOSIZE);
Red", CV_WINDOW_AUTOSIZE);
Green", CV_WINDOW_AUTOSIZE);
Blue", CV_WINDOW_AUTOSIZE);
Original", imageOriginal );
Red", imageCopiaRed );
Green", imageCopiaGreen );
Blue", imageCopiaBlue );
waitKey(0);return 0;
}
Inteligencia Artificial II
Pgina 11