Load .jpg image and save as BMP. Functions:
cvLoadImage, cvSaveImage
// Image Open Save.cpp : Defines the entry point for the console application.
//
#include "cv.h"
#include "highgui.h"
int main()
{
IplImage* my_image = 0;
my_image = cvLoadImage( "Lena.jpg" , 1 );// Load An image
cvNamedWindow( "Lena", CV_WINDOW_AUTOSIZE );// Create a window
cvShowImage( "Lena",my_image);
cvWaitKey(-1);// Wait until "space" pressed, or window closed.
cvSaveImage("Lena.bmp",my_image); // Save the previously opened image as BMP.
return 0;
}
Handles these types:
! Windows bitmap (.bmp, .dib)
! Sun Raster (.sr, .ras)
! JPEG (.jpeg, .jpg, .jpe)
! Portable Network Graphics (.png)
! Portable image (.pbm, .pgm, .ppm)
! TIFF (.tiff, .tif)
Load a sequece of images-> .
//
// The simplest OpenCV program.
// It creates window and displays a sequence of images in it
//
#include "cv.h" // include core library interface
#include "highgui.h" // include GUI library interface
#include <stdio.h>
#include <math.h>
#include <string.h>
IplImage* img = 0; // Declare IPL/OpenCV image pointers
IplImage* img0 = 0;
char* names[] = { "../pic1.bmp", "../pic2.bmp", "../pic3.bmp",
"../pic5.bmp", "../pic6.bmp", "../pic7.bmp" };
int main()
{
int i;
cvvNamedWindow( "image", 1 ); // create HighGUI window with name "image"
for( i = 0; i < 6; i++ )
{
img0 = cvvLoadImage( names[i] ); // load i-th image
img = cvCloneImage( img0 ); // make a copy of it
cvvShowImage( "image", img ); // show image in the window "image"
cvvWaitKey(0); // wait for key. The function has
// an event processing loop inside
cvReleaseImage( &img ); // release both images
cvReleaseImage( &img0 );
}
return 0;
}
Create image
// int width, height (in pixels)
// depth e.g. IPL_DEPTH_8U, IPL_DEPTH_32F ...
// int nChannels e.g. 1,3
IplImage* img= cvCreateImage( cvSize(width, height), depth, nChannels );
//To release the image do this:
cvReleaseImage(&img);
//Create a image with the same size, depth and channels
//src = source-image (IplImage *)
//dest = destination-image
IplImage* dest = cvCreateImage( cvGetSize(src), src->depth, src->nChannels );
Seperate RGB channel
//src = IplImage *, IPL_DEPTH_8U, nChannels =3
IplImage * red = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
IplImage * green = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
IplImage * blue = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
cvCvtPixToPlane(src,red,green,blue,NULL);
//OR
//src = IplImage *, IPL_DEPTH_8U, nChannels =4
IplImage * red = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
IplImage * green = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
IplImage * blue = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
IplImage * alpha = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U,1);
cvCvtPixToPlane(src,red,green,blue,alpha);
Convert Color
//from RGB (3-Channel)=src to GRAY (1 Channel)=dest
IplImage* dest= cvCreateImage(cvGetSize(src), IPL_DEPTH_8U , 1);
cvCvtColor(src ,dest, CV_RGB2GRAY);
//from GRAY(1-Channel)=src to RGB(3 Channel)=dest
IplImage* dest= cvCreateImage(cvGetSize(src), IPL_DEPTH_8U , 3);
cvCvtColor(src ,dest, CV_GRAY2RGB);
From 32F image to 8U
//src = IplImage * - depth = IPL_DEPTH_32F, nChannels =1
//dest = IplImage * - depth = IPL_DEPTH_8U, nChannels =1 (gray)
double scale, shift;
double minVal, maxVal;
cvMinMaxLoc(src, &minVal, &maxVal);
scale = 255/(maxVal - minVal);
shift = -minVal*scale;
cvConvertScale (src, dest, scale, shift);
No comments:
Post a Comment