OpenCV获取和设置图像的平均亮度

1. OpenCV1.0中C方式:

  1. double getAvg(IplImage *img)  
  2. {  
  3.     IplImage *gray = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);  
  4.     cvCvtColor(img,gray,CV_RGB2GRAY);  
  5.     CvScalar scalar = cvAvg(gray);  
  6.     cvReleaseImage(&gray);  
  7.     return scalar.val[0];  
  8. }  

  1. void setAvg(IplImage *img,IplImage *out,double avg_gray)  
  2. {  
  3.     double prev_avg_gray = get_avg_gray(img);  
  4.     cvConvertScale(img,out,avg_gray/prev_avg_gray);  
  5. }  

2. OpenCV2.0中C++方式:

  1. double getAvg(Mat img)  
  2. {
  3.  Mat gray;
  4.     cvtColor(img, gray, CV_RGB2GRAY);  
  5.  Scalar scalar = mean(gray);  
  6.     return scalar.val[0];
  7. }  

  1. void setAvg(Mat scr,Mat dst, double avg)  
  2. {  
  3.     double fpreAvg = getAvg(scr);  
  4.     scr.convertTo(dst,scr.type(),avg/fpreAvg);  
  5. }  

你可能感兴趣的:(OpenCV,Mat)