继续是弱弱的做出了一份。
代码
#include "cv.h"
#include "highgui.h"
#include "stdio.h"
int main( int argc, char** argv ){
IplImage *img1,*r,*g,*b;
IplImage *clone1,*clone2;
cvNamedWindow("exercise3-7", CV_WINDOW_AUTOSIZE );
if (argv[1])
{
img1=cvLoadImage(argv[1]);
}
else return 1;
CvSize Size1;
Size1=cvGetSize(img1);
r=cvCreateImage(Size1,IPL_DEPTH_8U,1);
g=cvCreateImage(Size1,IPL_DEPTH_8U,1);
b=cvCreateImage(Size1,IPL_DEPTH_8U,1);
cvSplit(img1,b,g,r,NULL);
// BlueImage=cvCreateImage(Size1,IPL_DEPTH_8U,3);
// GreenImage=cvCreateImage(Size1,IPL_DEPTH_8U,3);
// RedImage=cvCreateImage(Size1,IPL_DEPTH_8U,3);
// cvMerge(0,0,b,0,BlueImage);
// cvMerge(0,g,0,0,GreenImage);
// cvMerge(0,0,r,0,RedImage);
cvShowImage("exercise3-7", img1 );
cvNamedWindow("g", CV_WINDOW_AUTOSIZE );
IplImage * GreenImage=cvCreateImage(Size1,IPL_DEPTH_8U,3);
cvMerge(0,g,0,0,GreenImage);
clone1=clone2=cvCloneImage(g);
double maximum,minimum;
cvMinMaxLoc(g,&minimum,&maximum);
unsigned char thresh = (unsigned char)((maximum - minimum)/2.0);
cvmSetZero(clone1);
cvAddS(clone1,cvScalar(thresh),clone1);
//cvSetReal2D(clone1,0,0,10);
cvmSetZero(clone2);
cvCmp(g, clone1, clone2, CV_CMP_GE);
cvSubS(g,cvScalar(thresh/2), g, clone2);
cvShowImage("g", g);
cvWaitKey(0);
cvReleaseImage(&img1); cvReleaseImage(&g);
cvDestroyWindow("exercise3-7");
return 0;
}