http://m.blog.csdn.net/blog/u014395105/41308979

最近在研究如何用C++来处理图像,而不使用封装好的OpenCV代码,这样能够更好的了解OpenCV的内部原理。

在网上搜了一些关于C++代码来实现RGB(彩色)图像转换为 gray(灰度)的原理以及代码,可读性较差,所以自己整理了一下,若需转载,请标明出处,谢谢!

一、学习cvtColor函数

void cvCvtColor( const CvArr* src, CvArr* dst, int code );

src 输入的 8-bit,16-bit或 32-bit单倍精度浮点数影像。

dst 输出的8-bit, 16-bit或 32-bit单倍精度浮点数影像。

code 色彩空间转换的模式,该code来实现不同类型的颜色空间转换。比如CV_BGR2GRAY表示转换为灰度图,CV_BGR2HSV将图片从RGB空间转换为HSV空间。其中当code选用CV_BGR2GRAY时,dst需要是单通道图片。当code选用CV_BGR2HSV时,对于8位图,需要将RGB值归一化到0-1之间。这样得到HSV图中的H范围才是0-360,S和V的范围是0-1。

二、利用OpenCV的函数将彩色图像转为灰度图像:

#include

using namespace cv;

using namespace std;

int main()

{

Mat src = imread("lena.jpg",1);

//Mat src = imread("lena.jpg",0);

Mat dst;

namedWindow("RGB",WINDOW_AUTOSIZE);

imshow("RGB",src);

//waitKey(0);

cvtColor(src,dst,CV_BGR2GRAY);

namedWindow("GRAY",WINDOW_AUTOSIZE);

imshow("GRAY",dst);

cout<

waitKey(0);

src.release();

dst.release();

destroyWindow("RGB");

destroyWindow("GRAY");

return 0;

}

三、imread的函数原型是:Mat imread( const string& filename, int flags=1 );

Mat是OpenCV里的一个数据结构,在这里我们定义一个Mat类型的变量img,用于保存读入的图像,在本文开始有写到,我们用imread函数来读取图像,第一个字段标识图像的文件名(包括扩展名),第二个字段用于指定读入图像的颜色和深度,它的取值可以有以下几种:

1) CV_LOAD_IMAGE_UNCHANGED (<0),以原始图像读取(包括alpha通道),

2) CV_LOAD_IMAGE_GRAYSCALE ( 0),以灰度图像读取

3) CV_LOAD_IMAGE_COLOR (>0),以RGB格式读取

转载请注明出处:http://blog.csdn.net/u014395105/article/details/41308979

c++ cv转化灰度图_OpenCV C++如何使RGB图像变为灰度图像相关推荐

  1. opencv批量灰度转换_OpenCV图像处理之常见的图像灰度变换

    1.灰度线性变换 图像的灰度线性变换是图像灰度变换的一种,图像的灰度变换通过建立灰度映射来调整源图像的灰度,从而达到图像增强的目的.灰度映射通常是用灰度变换曲线来进行表示.通常来说,它是将图像的像素值 ...

  2. python将图像转化为灰度图像_在Python中,如何将RGB图像转换为灰度图像?

    我正在尝试使用matplotlib读取RGB图像并将其转换为灰度图像. 在matlab中,我使用这个: img = rgb2gray(imread('image.png')); 在matplotlib ...

  3. matlab灰度图孔洞填充,一种深度图像空洞的自动填充方法与流程

    本发明涉及深度图像空洞填充技术,从彩色图像的结构相似性出发,求解空洞像素点的多尺度结构相似性,将空洞像素分为平滑区域空洞像素和非平滑区域空洞像素,并针对不同的空洞像素,采用不同的填充算法.在平滑区域空 ...

  4. matlab将图片转换为灰度图_视频处理之灰度图

    欲观原文,请君移步​mp.weixin.qq.com 灰度图概念 灰度图 ,Gray Scale Image 或是Grey Scale Image,又称灰阶图.把白色与黑色之间按对数关系分为若干等级, ...

  5. 灰度图、黑白图,彩色图理解

    黑白图,是指每个像素的颜色用二进制的1位来表示,颜色只有"1"和"0"这两个值 ,(Data值为0或者255)这也就是说,要么是黑,要么是白.例如: CvInv ...

  6. 【Python·OpenCV】如何实现 HSV 与灰度图的相互转换?

    文章目录 一.引言 二.为什么需要 HSV ? 三.HSV 三个分量表示什么? 四.绘图误区 五.HSV 和灰度图的转换 六.参考链接 Github 项目地址:https://github.com/S ...

  7. 利用OpenCV的imread将RGB图像转化为灰度图像

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 通常,我们是利用cvtColor将图像转化为灰度 ...

  8. 2021-07-27 对labelme标注出来的JSON文件进行灰度图转化(标签值0.1.2.3.4)

    对labelme标注出来的JSON文件进行灰度图转化(标签值0.1.2.3.4) 原图如下: 标注后生成json文件如下: import cv2 import numpy as np import j ...

  9. python使用openCV把原始彩色图像转化为灰度图、使用矩阵索引的方式对数据数据进行剪裁(image cropping)

    python使用openCV把原始彩色图像转化为灰度图.使用矩阵索引的方式对数据数据进行剪裁(image cropping) 目录

  10. Python使用openCV把原始彩色图像转化为灰度图、使用OpenCV把图像二值化(仅仅包含黑色和白色的简化版本)、基于自适应阈值预处理(adaptive thresholding)方法

    Python使用openCV把原始彩色图像转化为灰度图.使用OpenCV把图像二值化(仅仅包含黑色和白色的简化版本).基于自适应阈值预处理(adaptive thresholding)方法 目录

最新文章

  1. 【嵌入式】C语言高级编程-可变参数宏(12)
  2. 拾趣——ios::sync_with_stdio(false)详解(提高代码运算速度)
  3. linux下elasticsearch的安装
  4. Python 配置文件之ConfigParser模块(实例、封装)
  5. python构建huffman树_python:哈夫曼树,PythonHuffuman
  6. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)
  7. 23种设计模式(十八)状态变化之备忘录
  8. Android软键盘问题
  9. matlab 改变图片比例尺,ps修改图片尺寸和比例尺方法图解
  10. PDF修改文字的步骤
  11. 2018.12.15【HDU4622】Reincarnation(后缀自动机SAM)
  12. java 创建word文件_java基于feemarker 生成word文档(超级简单)
  13. wincc做皮带动画_WINCC中制作管道流体流动动画的一种方法
  14. Windows自定义右键菜单
  15. VTP Domain
  16. java 获取系统分隔符_java 根据系统获取文件分隔符
  17. Windows10系统盘清理实用攻略
  18. (贪心)过桥问题(c++)
  19. 数字人民币跟第三方支付的区别
  20. 苹果笔记本屏幕亮度调节不了/太暗怎么办?

热门文章

  1. Windows 10系统【之】内置应用
  2. 笔记本电脑无法连接WiFi,如何解决
  3. 2019面试宝典之.Net
  4. Mac技巧之 Numbers 排除重复表格(去重)方法
  5. 一些手机APP默认的文件保存位置
  6. 彻底理解 Window 和 WindowManager
  7. [dp][思维]Paranoid String CF1694B
  8. 应届生年薪 40w 在杭州可以过上什么样的生活?
  9. Android-环境搭建
  10. 2022茶艺师(中级)考题及模拟考试