进公司实习,发现同事用的都是OPENCV,看看手里的MATLAB真有点无地自容。好吧,那就学吧。翻了一下书,感觉OPENCV没有想象中的那么恐怖。记得毕业的时候,我班同学也仅仅花了几天时间久做出来一个基于OPENCV的人脸识别系统。要有信心,有决心!
主要参考了OPENCV的官方网站
这个程序的功能是从C:\Debug中读取文件1.jpg,并进行反色处理。这里的反色没有调用库函数而是使用循环处理完成的。
#include "iostream.h"
#include "highgui.h"
#include "cv.h"
#include "stdio.h"
int main(int argc, char **argv)
{
//IplImage* img=cvLoadImage(argv[1]);
int height,width,step,channels;
uchar *data;
int i,j,k;
IplImage* img=0;
img=cvLoadImage("C:\\Debug\\1.jpg", CV_LOAD_IMAGE_COLOR);
if(!img) printf("Could not load image file: %s\n","C:\Debug\2.jpg");
// get the image data
height = img->height;
width = img->width;
step = img->widthStep;
channels = img->nChannels;
data = (uchar *)img->imageData;
printf("Processing a %dx%d image with %d channels\n",height,width,channels);
// create a window
cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE);
cvMoveWindow("mainWin", 100, 100);
// invert the image
// 相当于 cvNot(img);
// IplImage *pDstImg = cvCreateImage(cvGetSize(img),img->depth,img->nChannels);
// cvNot(img, pDstImg);
for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)
data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
// show the image
cvShowImage("mainWin", img );
// wait for a key
cvWaitKey(0);
// release the image
cvReleaseImage(&img );
return 0;
}