// PS_Algorithm.h
#ifndef PS_ALGORITHM_H_INCLUDED
#define PS_ALGORITHM_H_INCLUDED
#include <iostream> #include <string> #include "cv.h" #include "highgui.h" #include "cxmat.hpp"#include "cxcore.hpp"
using namespace std; using namespace cv;#endif // PS_ALGORITHM_H_INCLUDED
/*The program will transfor the colorimage to the gray image.The image must be color image.*/#include "PS_Algorithm.h"int main(){ string Image_name("2.jpg"); Mat Image=imread(Image_name.c_str()); Mat Image_test(Image.size(),CV_32FC3); Image.convertTo(Image_test, CV_32FC3); Mat Gray_img(Image_test.size(), CV_32FC1); Mat r,g,b; Gray_img.copyTo(r); g=r; b=r; Mat bgr[]={b,g,r}; split(Image_test, bgr); b=bgr[0]; g=bgr[1]; r=bgr[2]; Mat I1,I2,I3; I1=r; I2=r; I3=r; // I=0.299*R+0.587*G+0.144*B 方案一 Gray_img=(0.299*r+0.587*g+0.144*b); I1=Gray_img/255; imshow("I1", I1); // I=(R+G+B)/3 方案二 Gray_img=(0.333*r+0.333*g+0.333*b); I2=Gray_img/255; for(int i=100; i<105; i++) for(int j=100; j<105; j++) cout<<I2.at<float>(i,j)<<endl; imshow ("I2", I2); // I=max(R,G,B) 方案三 float *p1,*p2,*p3,*p; p1=r.ptr<float>(0); p2=g.ptr<float>(0); p3=b.ptr<float>(0); p=I3.ptr<float>(0); int nums; nums=Gray_img.rows*Gray_img.cols; for (int i=0; i<nums; i++) p[i]=max(p1[i],max(p2[i],p3[i]))/255; imshow("I3",I3); cout<<"All is well."<<endl; waitKey();}