Read and write an image in opencv
In OpenCV,I want to load the image and get the pixel values.the input image pixels are assigned to another one array.that array values are reconstruct and display the output image.if i do some manipulations to that input pixels,i want to get corresponding output of that pixels.what are the commands used for 开发者_如何转开发this?
Hi I would do the following
#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
//----------------------
}
}
}
There are some other stuffs you need to save and view image cvSaveImage(outF,image2) cvNamedWindow(file,1) cvShowImage(file,image)
. More on here.
精彩评论