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语言实现)相关推荐

  1. c语言灰度图像处理程序,C语言实现图像灰度化

    原理: 在一般情况下,彩色图像每个像素用3个字节表示,每个字节分别对应着R.G.B分量的亮度值,转换后的黑白图像用1个字节来表示灰度值,它的值在0到255间,数值越大该点越亮,反之,越暗.图像灰度化算 ...

  2. html5图片灰度显示,HTML5 组件Canvas实现图像灰度化

    HTML5发布已经有很长一段时间了,一直以来从来没有仔细的看过,过年刚来随便看看 发现HTML5中的Canvas组件功能是如此的强大,不怪很多牛人预言Flash已死,死不死 不是我要关心的,我关心的C ...

  3. [Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  4. c#图像灰度化、灰度反转、二值化

    图像灰度化: 将彩色图像转化成为灰度图像的过程成为图像的灰度化处理.彩色图像中的每个像素的颜色有R.G.B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*2 ...

  5. 2种图像增强方法:图像点运算和图像灰度化处理

    摘要:本文主要讲解图像点运算的灰度化处理,详细介绍常用的灰度化处理方法,并分享了图像颜色空间相互转换,以及三种灰度转换算法的实现. 本文分享自华为云社区<[Python从零到壹] 四十三.图像增 ...

  6. MATLAB:虹膜识别的图像灰度化处理,直方图均衡化

    (1)图像灰度化处理: 读取一张图片之后,进行灰度化处理,然后对其进行直方图均值化. clear;close all %读取原图地址 RGB= imread('D:\img\1.jpg'); %图像灰 ...

  7. 图像灰度化的三种方法(matlab、C++、Python实现)

    灰度化处理就是将一幅色彩图像转化为灰度图像的过程.彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程.灰度值大的像素点比较亮(像素值最大为255,为 ...

  8. CUDA精进之路(三):图像处理——图像灰度化、灰度直方图统计

    引言 在大部分的图像处理程序中,其中必不可少的一步就是对传入的彩图进行灰度处理,将三个通道的RGB图片转化为单通道的Gray图,而对于灰度图进行直方图统计同样是观察检测图像特征的常用方法.在OpenC ...

  9. 【python图像处理】图像灰度化处理、图像灰度线性变换、图像灰度非线性变换

    一.图像灰度化处理 1.最大值灰度处理方法 2.平均灰度处理方法 3.加权平均灰度处理方法 二.图像灰度线性变换 1.图像灰度上移变换 2.图像对比度增强变换 3.图像对比度减弱变换 4.图像灰度反色 ...

  10. 图像灰度化的三种常见方法源码

    图像灰度化是图像处理很基础的一部分,在这里给出图像灰度化的三种常见方法的M源码,以供大家参考~ 平均值法,最大值法,加权平均值法 function f=MyGrayProcessing(Img) [m ...

最新文章

  1. .NET Core IdentityServer4实战 第一章-入门与API添加客户端凭据
  2. egg.js连接mysql数据库遇到的问题
  3. angular 4使用jquery 第三方插件库
  4. Android开发人员不得不收集的代码(不断更新中...)
  5. 宁波大红鹰学院计算机毕设,网络文化对价值观的影响调查报告马克思主义基本原理概论》课程调查实践报告大学毕业设计.doc...
  6. 淮北师范18-19计算机科学与技术大类实验课试卷
  7. Android 系统(172)---如何使用addr2line命令解析native backtrace
  8. 转 jquery使用技巧小结
  9. 【OpenCV学习笔记】【函数学习】八(序列数据结构)
  10. linux imx6 sdio wifi,关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试
  11. 读书笔记 - 自控力
  12. 怎样用c语言实现CPU超频,cpu超频教程【操作流程】
  13. Anno 让微服务、混合编程更简单(Net love Java)
  14. 对话霍金弟子:AI能帮助人类到其他星球进行时空旅行 | AI英雄
  15. 头脑王者服务器维护,头脑王者服务器
  16. Java开发工程师的一点职业发展规划
  17. HTML网页设计: 一 HTML的基本结构
  18. python云计算好学吗_没有基础,可以学云计算专业吗,学起来是不是很难,?
  19. apk瘦身 提高优化效果
  20. 电影推荐:阿兰·图灵--一个伟大而又悲惨的天才

热门文章

  1. I/O设备的编址方式(统一编址,独立编址)
  2. Python 数据全部显示,去掉中间省略号(pandas、...)
  3. Python中使用psutil查看内存占用的情况(内存)
  4. linux修改文件夹及其下面所有文件的权限(文件夹权限)
  5. ICS/SCADA 系统的对比
  6. Nmap个人实战总结
  7. Linux系统编程:mmap介绍和使用mmap实现进程间通信
  8. 常见的爬虫分析库(1)-Python3中Urllib库基本使用
  9. JavaScript(一)---- 概述
  10. 什么是PostgreSQL?跟MySQL、Oracle比强在哪?