首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图像识别入门4 图像的灰度处理

彩色图片信息量大,有的时候我们仅仅用灰度图像里的信息就已经够了,为了提高运算速度自然就会采用灰度图,甚至有时灰度图还是过大,采用二值化图像也是有可能的。我们识别物体,最关键的因素是梯度(现在很多的特征提取,SIFT,HOG等等本质都是梯度的统计信息),梯度意味着边缘,这是最本质的部分,而计算梯度,自然就用到灰度图像了。

我们日常的环境通常获得的是彩色图像,很多时候我们常常需要将彩色图像转换成灰度图像。也就是3个通道(RGB)转换成1个通道。

1)平均法

最简单的方法当然就是平均法,将同一个像素位置3个通道RGB的值进行平均。

I(x,y) = 1/3 * I_R(x,y) +1/3 * I_G(x,y)+ 1/3 * I_B(x,y)

2)最大最小平均法

取同一个像素位置的RGB中亮度最大的和最小的进行平均。

3)加权平均法

I(x,y) = 0.3 * I_R(x,y) +0.59 * I_G(x,y)+ 0.11 * I_B(x,y)

这是最流行的方法。几个加权系数0.3,0.59,0.11是根据人的亮度感知系统调节出来的参数,是个广泛使用的标准化参数。

我们这里直接用给出的函数灰度化。

#include //定义了许多数据结构和基本的函数

#include //很方便的图像捕获接口

#include

#include

#include

//#include

using namespace std;

using namespace cv;

int main(int argc, char** argv)

{

//Mat image;

//image = imread("01.jpg");

//

//namedWindow("Display", WINDOW_AUTOSIZE);

//imshow("Dispaly", image);

//waitKey(0); //等待键盘时间

//return 0;

/*将图像由彩色图片输出成黑白图片*/

Mat image;

image = imread("D:\\abc\\1.jpg");

Mat gray_image;

cvtColor(image, gray_image, CV_BGR2GRAY); //要引用头文件 opencv/opencv.hpp

imwrite("./Gray_Image.jpg", gray_image);

namedWindow("image", WINDOW_AUTOSIZE);

namedWindow("gray_image", WINDOW_AUTOSIZE);

imshow("image", image);

imshow("gray_image", gray_image);

waitKey(0);

return 0;

}

运行结果:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190106G005YI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券