在opencv中读写图像

时间:2011-07-20 05:11:33

标签: opencv

在OpenCV中,我想加载图像并获取像素值。输入图像像素被分配给另一个数组。重建数组值并显示输出图像。如果我对输入像素进行一些操作,我想获得相应的像素输出。用于此的命令是什么?

1 个答案:

答案 0 :(得分:2)

您好我会做以下

#include "cv.h"
#include "highgui.h"
#include <stdio.h>

IplImage *image=0, *image2=0;

int main(int argc, char** argv) {
    char* file, *outF;
    //Usage: filename.exe imagefile outputimage
    if (argc == 3) {
        file=argv[1];
        outF=argv[2];
    }else {
        exit(0);
    }
    //Loading file
    if( (image = cvLoadImage( file, 1)) == 0 )
        return -1;
    // creating image in greyscale
    image2 = cvCreateImage(cvSize(image->width,image->height),IPL_DEPTH_8U,1);
    myFunction();
}

void myFunction() {
    uchar *pix; // To store pixel value temporarily
    uchar *out; 
    //// NOW U CAN ACCESS EACH Pixel
    for ( int posY=0; posY<image->height;posY++) {
        for ( int posX=0; posX<image->width;posX++) {
            pix=&((uchar *)(image->imageData+posY*image->widthStep))[posX]; //this is to get value
            out=&((uchar *)(image2->imageData+posY*image2->widthStep))[posX];

             //Do your stuff here ---Example
             // to access original image file use
             // uchar c = *pix;

             // this assgins your output image your manipulations
             *out= someValue[x][y]; //(0-255) your assignment from your array, It should work
            //----------------------


        }
    }
}

您需要保存和查看图片cvSaveImage(outF,image2) cvNamedWindow(file,1) cvShowImage(file,image)。更多关于here