图像灰度化(C语言实现)
2019独角兽企业重金招聘Python工程师标准>>>
RGB三色图变成【0,255】的灰度图的简单方法
方法1. 取RGB的平均值,即 pixel(i , j) = R(i , j) + G(i , j) + B(i , j)
方法2. 颜色空间的转换(RGB -> YUV),取Y分量(YUV中的 Y表示亮度)计算公式
pixel(i , j) = 0.3 * R(i , j) + 0.59 * G(i , j) + 0.11 * B(i , j)
#include "JpegDecoder.h"
#include <stdio.h>
#include <opencv2/highgui.hpp>
#include <math.h>using namespace JpegCodec;static cv::Mat ConvertToMat(Matrix &mat)
{int channel = CV_8UC3;if (mat.channal == 1) channel = CV_8UC1;cv::Mat img(mat.rows, mat.cols, channel); // create a new matrixfor (int i = 0; i < mat.rows * mat.cols * mat.channal; i++){img.data[i] = mat.data[i];}return img;
}void ShowImage(Matrix &mat)
{cv::Mat img = ConvertToMat(mat);cv::imshow("Bitmap", img);
}/* 方法一 */
void Gray(Matrix &dst, Matrix &src)
{dst.Create(src.rows, src.cols, 1);for (int i = 0; i < src.rows; i++){for (int j = 0; j < src.cols; j++){int idx = (i * src.rows + j) * 3;dst.data[idx / 3] = (src.data[idx] + src.data[idx + 1] + src.data[idx + 2]) / 3;}}
}/* 方法二 */
void Gray(Matrix &dst, Matrix &src)
{dst.Create(src.rows, src.cols, 1);for (int i = 0; i < src.rows; i++){for (int j = 0; j < src.cols; j++){int idx = (i * src.rows + j) * 3;dst.data[idx / 3] = 0.3 * src.data[idx] + 0.59 * src.data[idx + 1] + 0.11 * src.data[idx + 2];}}
}int main(int argc, char *arrv[])
{JpegDecoder decoder("01.jpg");Matrix mat, dst;decoder.Decoder(mat);Gray(dst, mat);ShowImage(dst);cvWaitKey(0);return 0;
}
JpegDecoder: https://github.com/lzb-cc/JpegCodecs
运行示例
转载于:https://my.oschina.net/tigerBin/blog/1486684
图像灰度化(C语言实现)相关推荐
- c语言灰度图像处理程序,C语言实现图像灰度化
原理: 在一般情况下,彩色图像每个像素用3个字节表示,每个字节分别对应着R.G.B分量的亮度值,转换后的黑白图像用1个字节来表示灰度值,它的值在0到255间,数值越大该点越亮,反之,越暗.图像灰度化算 ...
- html5图片灰度显示,HTML5 组件Canvas实现图像灰度化
HTML5发布已经有很长一段时间了,一直以来从来没有仔细的看过,过年刚来随便看看 发现HTML5中的Canvas组件功能是如此的强大,不怪很多牛人预言Flash已死,死不死 不是我要关心的,我关心的C ...
- [Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- c#图像灰度化、灰度反转、二值化
图像灰度化: 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理.彩色图像中的每个像素的颜色有R.G.B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*2 ...
- 2种图像增强方法:图像点运算和图像灰度化处理
摘要:本文主要讲解图像点运算的灰度化处理,详细介绍常用的灰度化处理方法,并分享了图像颜色空间相互转换,以及三种灰度转换算法的实现. 本文分享自华为云社区<[Python从零到壹] 四十三.图像增 ...
- MATLAB:虹膜识别的图像灰度化处理,直方图均衡化
(1)图像灰度化处理: 读取一张图片之后,进行灰度化处理,然后对其进行直方图均值化. clear;close all %读取原图地址 RGB= imread('D:\img\1.jpg'); %图像灰 ...
- 图像灰度化的三种方法(matlab、C++、Python实现)
灰度化处理就是将一幅色彩图像转化为灰度图像的过程.彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程.灰度值大的像素点比较亮(像素值最大为255,为 ...
- CUDA精进之路(三):图像处理——图像灰度化、灰度直方图统计
引言 在大部分的图像处理程序中,其中必不可少的一步就是对传入的彩图进行灰度处理,将三个通道的RGB图片转化为单通道的Gray图,而对于灰度图进行直方图统计同样是观察检测图像特征的常用方法.在OpenC ...
- 【python图像处理】图像灰度化处理、图像灰度线性变换、图像灰度非线性变换
一.图像灰度化处理 1.最大值灰度处理方法 2.平均灰度处理方法 3.加权平均灰度处理方法 二.图像灰度线性变换 1.图像灰度上移变换 2.图像对比度增强变换 3.图像对比度减弱变换 4.图像灰度反色 ...
- 图像灰度化的三种常见方法源码
图像灰度化是图像处理很基础的一部分,在这里给出图像灰度化的三种常见方法的M源码,以供大家参考~ 平均值法,最大值法,加权平均值法 function f=MyGrayProcessing(Img) [m ...
最新文章
- .NET Core IdentityServer4实战 第一章-入门与API添加客户端凭据
- egg.js连接mysql数据库遇到的问题
- angular 4使用jquery 第三方插件库
- Android开发人员不得不收集的代码(不断更新中...)
- 宁波大红鹰学院计算机毕设,网络文化对价值观的影响调查报告马克思主义基本原理概论》课程调查实践报告大学毕业设计.doc...
- 淮北师范18-19计算机科学与技术大类实验课试卷
- Android 系统(172)---如何使用addr2line命令解析native backtrace
- 转 jquery使用技巧小结
- 【OpenCV学习笔记】【函数学习】八(序列数据结构)
- linux imx6 sdio wifi,关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试
- 读书笔记 - 自控力
- 怎样用c语言实现CPU超频,cpu超频教程【操作流程】
- Anno 让微服务、混合编程更简单(Net love Java)
- 对话霍金弟子:AI能帮助人类到其他星球进行时空旅行 | AI英雄
- 头脑王者服务器维护,头脑王者服务器
- Java开发工程师的一点职业发展规划
- HTML网页设计: 一 HTML的基本结构
- python云计算好学吗_没有基础,可以学云计算专业吗,学起来是不是很难,?
- apk瘦身 提高优化效果
- 电影推荐:阿兰·图灵--一个伟大而又悲惨的天才