处理图像

    技术2022-05-11  51

    Load .jpg image and save as BMP. Functions:

    cvLoadImage, cvSaveImage.

    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-> .

    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);

     

    From 8U image to 32FU

    : cvConvertScale( image_8U, image_32F,1,0);

     

     

     

    最新回复(0)