新版本的OpenCV中,习惯于用Mat处理,而一般学习之初,用旧版本的写法比较多(IplImage)。突然间,遇到这样的问题,需要用新的版本实现图像灰度化处理,发现需要访问图像矩阵的数据元素。要找到旧版本的实例比较多,实现的方法介绍也比较多(方法可以参考http://blog.csdn.net/likezhaobin/article/details/6915754)。本帖只实现其中一种方法,其余的方法, 修改少量代码就行。

具体代码如下:

[html] view plaincopy
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include "opencv2/opencv.hpp"
  4. #include "opencv/cv.h"
  5. using namespace std;
  6. using namespace cv;
  7. void cvtCOLOR(Mat src, Mat dst)
  8. {
  9. float R, G, B;
  10. for (int y = 0; y < src.rows; y++)
  11. {
  12. uchar* data = dst.ptr<uchar>(y);
  13. for (int x = 0; x < src.cols; x++)
  14. {
  15. B = src.at<Vec3b>(y, x)[0];
  16. G = src.at<Vec3b>(y, x)[1];
  17. R = src.at<Vec3b>(y, x)[2];
  18. data[x] = (int)(R * 0.299 + G * 0.587 + B * 0.114);//利用公式计算灰度值(加权平均法)
  19. }
  20. }
  21. }
  22. int main()
  23. {
  24. Mat src = imread("1.jpg", 1);
  25. Mat dst(src.rows, src.cols, CV_8UC1);//大小与原图相同的八位单通道图
  26. cvtCOLOR(src, dst);
  27. imshow("原始图", src);
  28. imshow("灰度图", dst);
  29. waitKey(0);
  30. return 0;
  31. }

效果如下图所示:

1

编程实现灰度处理函数相关推荐

  1. Linux 编程中的API函数和系统调用的关系【转】

    转自:http://blog.chinaunix.net/uid-25968088-id-3426027.html 原文地址:Linux 编程中的API函数和系统调用的关系 作者:up哥小号 API: ...

  2. Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介、使用方法、经典案例之详细攻略

    Python编程学习:让函数更加灵活的*args和**kwargs(设计不同数量参数的函数)的简介.使用方法.经典案例之详细攻略 目录 *args和**kwargs(设计不同数量的参数函数)的简介 1 ...

  3. 深入解析C++编程中的静态成员函数

    这篇文章主要介绍了深入解析C++编程中的静态成员函数,是C++入门学习中的基础知识,需要的朋友可以参考下 C++静态成员函数 与数据成员类似,成员函数也可以定义为静态的,在类中声明函数的前面加stat ...

  4. 在C语言中以编程的方式获取函数名

    在C语言中以编程的方式获取函数名 仅仅为了获取函数名,就在函数体中嵌入硬编码的字符串,这种方法单调乏味还易导致错误,不如看一下怎样使用新的C99特性,在程序运行时获取函数名吧. 对象反射库.调试工具及 ...

  5. 华为软件编程规范和范例 函数、过程

    ¹6-1 :对所调用函数的错误返回码要仔细.全面地处理 ¹6-2 :明确函数功能,精确(而不是近似)地实现函数设计 ¹6-3 :编写可重入函数时,应注意局部变量的使用(如编写C/C++ 语言的可重入函 ...

  6. c 语言绘图函数,c语言图形编程(三、绘图函数-)(C language graphics programming (three, drawing function -)).doc...

    c语言图形编程(三.绘图函数-)(C language graphics programming (three, drawing function -)).doc c语言图形编程(三.绘图函数-01) ...

  7. 数据库编程1 Oracle 过滤 函数 分组 外连接 自连接

    [本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲>数据库编程1 Oracle 过滤 函数 分组 外连接 自连接本文实验基于的数据表:winso ...

  8. 浅谈.Net异步编程的前世今生----异步函数篇(完结)

    前言 上一篇我们着重讲解了TPL任务并行库,可以看出TPL已经很符合现代API的特性:简洁易用.但它的不足之处在于,使用者难以理解程序的实际执行顺序. 为了解决这些问题,在C# 5.0中,引入了新的语 ...

  9. java socket 异步回调函数,分享nodejs异步编程基础之回调函数用法

    nodejs异步编程基础之回调函数用法分析 本文实例讲述了nodejs异步编程基础之回调函数用法.分享给大家供大家参考,具体如下: Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实 ...

最新文章

  1. LVS+keepalived负载均衡
  2. ubuntu部署eclipse兼容性问题
  3. js实现焦点进入文本框内关闭输入法:imeMode
  4. 人工智能ai 学习_人工智能中学习代理的要素
  5. 130242014060-郑佳敏-第3次实验
  6. k8s 1.16安装metrics server
  7. 2016matlab打开toolbox,MATLAB2016添加工具箱toolbox方法,有截图
  8. 中英文代码对比之ZLOGO 4 LOGO
  9. [系统控件重绘教程(一)]重绘NSWindow
  10. nginx防恶意ip访问控制
  11. 树莓派基于PS2操纵杆的飞机大战小游戏
  12. CSS面试题整理汇总
  13. 快看看用Python生成Excel炫酷图表,不然你就OUT了
  14. python迅雷sdk_Python批量创建迅雷任务及创建多个文件
  15. 什么镜头最适合拍风景_风景用什么镜头好
  16. word分词器的使用
  17. 阿里巴巴历年经典面试题汇总:Java岗
  18. p2000显卡LINUX无显示,petalinux 2020.01工程 linux系统启动不完全
  19. 单片机-嵌入式相关的一些论坛
  20. Gannicus Guo的DIY TCP/IP之旅

热门文章

  1. 运营商级网络地址转换(LSN/CGN)方案介绍
  2. 有关SwfUpLoad的2038 错误
  3. TIDB,面向未来的数据库到底是什么?
  4. 金三银四,写个漂亮的技术简历
  5. 给互联网职场人五点吐血建议
  6. 实习生离职,HR恼羞成怒:我要全行业封杀你
  7. 程序员的35个坏习惯,你有几条?
  8. 程序员如何判断是否到了该辞职的时候?以及常用的辞职借口总结
  9. 拥抱开源 加入分享 贡献小力量
  10. 模拟打字机,文字逐个出现