opencv3图像灰度化处理 c++

来源:互联网 发布:网络盒子破解软件 编辑:程序博客网 时间:2024/05/20 18:50
  1. #include <iostream>  
  2. #include "opencv2/opencv.hpp"  
  3. #include "opencv/cv.h"  
  4.   
  5. using namespace std;  
  6. using namespace cv;  
  7.   
  8. void cvtCOLOR(Mat src, Mat dst)  
  9. {  
  10.     float R, G, B;  
  11.     for (int y = 0; y < src.rows; y++)  
  12.     {  
  13.         uchar* data = dst.ptr<uchar>(y);  
  14.         for (int x = 0; x < src.cols; x++)  
  15.         {  
  16.             B = src.at<Vec3b>(y, x)[0];  
  17.             G = src.at<Vec3b>(y, x)[1];  
  18.             R = src.at<Vec3b>(y, x)[2];  
  19.             data[x] = (int)(R * 0.299 + G * 0.587 + B * 0.114);//利用公式计算灰度值(加权平均法)  
  20.         }  
  21.     }  
  22. }  
  23.   
  24. int main()  
  25. {  
  26.     Mat src = imread("1.jpg", 1);  
  27.     Mat dst(src.rows, src.cols, CV_8UC1);//大小与原图相同的八位单通道图  
  28.     cvtCOLOR(src, dst);  
  29.     imshow("原始图", src);  
  30.     imshow("灰度图", dst);  
  31.     waitKey(0);  
  32.     return 0;  
  33. }  
原创粉丝点击