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