// Ex4_7.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <cv.h>
#include <cvcam.h>
#include <cxcore.h>
#include <highgui.h>
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cvcam.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")
int main(int argc, char* argv[])
{
IplImage *pSourceImage = cvLoadImage(argv[1]);
assert(pSourceImage != NULL);
IplImage *pSubBImage = cvCreateImage(cvGetSize(pSourceImage),pSourceImage->depth,1);
assert(pSubBImage != NULL);
IplImage *pSubGImage = cvCloneImage(pSubBImage);
assert(pSubGImage != NULL);
IplImage *pSubRImage = cvCloneImage(pSubBImage);
assert(pSubRImage != NULL);
/********************* a***********************/
cvSplit(pSourceImage,NULL,pSubGImage,NULL,NULL);
cvNamedWindow("Show_Green");
cvShowImage("Show_Green",pSubGImage);
/********************* b***********************/
IplImage *pCloneSubGImage1 = cvCloneImage(pSubGImage);
IplImage *pCloneSubGImage2 = cvCloneImage(pSubGImage);
cvNamedWindow("Show_SubGImageClone1");
cvNamedWindow("Show_SubGImageClone2");
cvShowImage("Show_SubGImageClone1",pCloneSubGImage1);
cvShowImage("Show_SubGImageClone2",pCloneSubGImage2);
/******************** c ***********************/
double dMaxPixOfGreen = 0;
double dMinPixOfGreen = 0;
cvMinMaxLoc(pSubGImage,&dMinPixOfGreen,&dMaxPixOfGreen,NULL,NULL,NULL);
printf("MaxPix : %f MinPix : %f",dMaxPixOfGreen,dMinPixOfGreen);
/******************** d ***********************/
cvSet(pCloneSubGImage1,CV_RGB((dMaxPixOfGreen-dMinPixOfGreen),(dMaxPixOfGreen-dMinPixOfGreen),(dMaxPixOfGreen-dMinPixOfGreen)),NULL);
/******************** e ***********************/
cvSetZero(pCloneSubGImage2);
cvCmp(pSubGImage,pCloneSubGImage1,pCloneSubGImage2,CV_CMP_GE);
cvShowImage("Show_SubGImageClone2",pCloneSubGImage2);
/******************** f ***********************/
int ThreadNumber = (int)(dMaxPixOfGreen-dMinPixOfGreen)/2;
cvSubS(pSubGImage,CV_RGB(ThreadNumber,ThreadNumber,ThreadNumber),pSubGImage,pCloneSubGImage2);
cvNamedWindow("Show_Result");
cvShowImage("Show_Result",pSubGImage);
cvWaitKey();
return 0;
}