OpenCV简单的图像灰度化
来源:互联网 发布:手机淘宝几天到货 编辑:程序博客网 时间:2024/06/03 22:58
OpenCV简单的图像灰度化
图像灰度化算是数字图像处理中很简单的操作了,这里使用OpenCV简单尝试一下。
简单粗暴的方法:
最简单粗暴的方法只需要一行代码,如下:
Mat mat = imread("Image.jpg", IMREAD_GRAYSCALE);
其中,第一个为图像文件的储存路径,第二个为打开图像的模式。模式总共有以下几种:
enum ImreadModes { IMREAD_UNCHANGED = -1,//啥都不做,该咋样咋样 IMREAD_GRAYSCALE = 0,//转换成灰度图 IMREAD_COLOR = 1, //转换成3通道RGB颜色 IMREAD_ANYDEPTH = 2,// IMREAD_ANYCOLOR = 4,//加载所有支持的格式,不转换 IMREAD_LOAD_GDAL = 8, IMREAD_REDUCED_GRAYSCALE_2 = 16, IMREAD_REDUCED_COLOR_2 = 17, IMREAD_REDUCED_GRAYSCALE_4 = 32, IMREAD_REDUCED_COLOR_4 = 33, IMREAD_REDUCED_GRAYSCALE_8 = 64, IMREAD_REDUCED_COLOR_8 = 65, IMREAD_IGNORE_ORIENTATION = 128 };
其中,IMREAD_UNCHANGED代表啥都不做,该咋样咋样,IMREAD_GRAYSCALE代表转换成灰度图,IMREAD_COLOR代表转换成3通道RGB颜色图,IMREAD_ANYDEPTH代表如果图像是16/32位的,则原样输出,否则转换为8位灰度图,IMREAD_ANYCOLOR代表加载所有支持的格式,不转换。
因此,只要选择灰度模式,OpenCV就会自动将图片转换为单通道的灰度图,我们就可以直接使用啦~
不过使用OpenCV提供好的代码有点Low,还是自己写吧~
自食其力的方法:
首先要确定RBG通道转换成灰度值的公式:
Gray = (11 * B + 59 * G + 30 * R + 50) / 100;
使用这一公式避免了小数计算,速度比较快。接下来,就可以逐个像素的修改颜色了。首先需要建立一个和原图像大小相等的灰度图像,并且该图像的通道是8位的:
Mat matGray(mat.rows, mat.cols, CV_8UC1);
然后一行行修改,使用ptr()方法获取每一行的头指针:
for (size_t idx = 0; idx < mat.rows; idx++){ uchar *ptr = mat.ptr<uchar>(idx); uchar *newPtr = matGray.ptr<uchar>(idx); for (size_t subIdx = 0; subIdx < mat.cols; subIdx++) { newPtr[subIdx] = (11 * ptr[subIdx * 3] + 59 * ptr[subIdx * 3 + 1] + 30 * ptr[subIdx * 3 + 2] + 50) / 100; }}
至此灰度化就搞定啦,效果还是不错的~虽说灰度化很简单,但毕竟是数字图像处理入门的第一步嘛~
以此纪念我在数字图像处理上的第一篇文章~
0 0
- OpenCV简单的图像灰度化
- OpenCV图像灰度化
- OpenCV图像灰度化
- OpenCV灰度化图像
- OpenCV 读取灰度图像的灰度值
- opencv简单的彩色图像灰度化和二值化(学习笔记)
- Opencv-图像灰度化、二值化
- opencv mat 图像灰度化
- OpenCV简单图像处理 灰度变换
- 图像简单的灰度变换
- opencv图像的读入、灰度化、二值化、反色
- opencv图像的读入、灰度化、二值化、反色
- opencv图像的读入、灰度化、二值化、反色
- python opencv(9)图像的复制与灰度化
- Opencv求取灰度图像的重心
- opencv 保存灰度图像的像素值
- opencv 保存灰度图像的像素值
- 用opencv创建图像的灰度直方图
- PostgreSQL笔记(一)安装、运行、远程访问
- Android之浅谈AsyncTask
- Android文件属性的权限和Permission的联系
- 2017/4/15 哈尔滨理工大学省选题解Day1
- unity3d 如何让天空旋转
- OpenCV简单的图像灰度化
- Android 中的IPC机制
- [LeetCode]384. Shuffle an Array
- pat 1128N Queens Puzzle
- Leetcde——121 Best Time to Buy and Sell Stock && 123 Best Time to Buy and Sell Stock
- java和C/C++ 字符char类型占不同的字节!
- 汇编笔记2
- 图解使用CURL下载和上传文件
- android 中Chronometer类源码分析