OpenCV:01.安装和转灰度图提升饱和度

本文详细介绍如何在Windows环境下使用Visual Studio安装配置Opencv环境,并通过示例代码展示如何利用Opencv进行图片处理,包括彩色图转灰度图、黑白图及调整饱和度等操作。

1. VS 安装、配置Opencv的环境

我们是在 windows的VS中开发 使用功能的方式是:头文件+dll文件的方式来学习opencv的一些常见使用方法。

  1. 下载 opencv.exe 并解压
  2. 生成->配置管理器->平台修改为x64
  3. 配置windows环境变量:path : opencv解压目录\build\x64\vc14\bin
  4. 配置头文件包含目录:调试->xx属性-> 配置属性 ->VC++ 目录-> 包含目录: opencv解压目录\build\include
  5. 配置库目录:调试->xx属性 -> 配置属性 ->VC++ 目录-> 库目录opencv解压目录\build\x64\vc14\lib
  6. 链接器:opencv解压目录\build\x64\vc14\lib 中的 opencv_world440d.lib 复制文件名至
    调试->xx属性 -> 配置属性 ->VC++ 目录-> 链接器 -> 输入 -> 附加依赖项
    注意:带d的适用于debug模式,不带d的使用于release模式
  7. .dll 系统适配,如果第6步完成后报错xxx.dll未找到,则先把opencv解压目录\build\x64\vc14\bin中的dll文件
    复制到系统盘\windows\System32系统盘\windows\SysWOW54,如果还是不是,则将第6步的文件换成release模式下的文件

c++ 中 uchar

char 是有符号的 unsigned char 是无符号的,char 整数范围为-128到127( 0x80__0x7F), 而unsigned char 整数范围为0到255( 0__0xFF )
有时候想把整数数值限在255范围内,也用unsigned char,这个类型在嵌入式用的多,所以 uchar 一般用于图片处理

2. opencv方法介绍:

  • Mat src = cv::imread(“图片路径”) :读取读片,注意 windows 中路径分隔符一定得修改为:/
  • cv::imwrite(“保存路径”,mat); 把 mat 写入文件,注意 windows 中路径分隔符一定得修改为:/
  • cv::imshow(“test pic”,mat); 显示图片
  • int height = cv::mat.rows // 获取 mat 的行高
  • int width = cv::mat.cols // 获取 mat 的列宽
  • int channels= mat.channels() // 颜色通道,一个像素点几个信息 3(BGR) 4(BGRA)
  • saturate_cast(b_w); // 大于 255 就变成 255 ,如果小于 0 就变成 0

3. 彩色图转灰度图及黑白图(手写)

	for (int i = 0; i < src.rows; i++){
		// 读取当前行的首地址
		uchar* start_pixels = src.ptr<uchar>(i);
		
		for (int j = 0; j < src.cols; j++){
			uchar b = start_pixels[0];
			uchar g = start_pixels[1];
			uchar r = start_pixels[2];

			// 彩色转灰度
			// 公式计算 f =  0.11R + 0.59G + 0.30B   gery 最大255 ,其他处理可能会超过 255
			// uchar gery = 0.11f*r + 0.59f*g + 0.30f*b;
			uchar gray = 0.11f*r + 0.59f*g + 0.30f*b;

			// 彩色转黑白
			uchar bw = (b + g + r) / 3 > 125 ? 255 : 0;

			// saturate_cast 大于 255就变成255 ,小于0 就变成0
			/* start_pixels[0] = saturate_cast<uchar>(bw);
			start_pixels[1] = saturate_cast<uchar>(bw);
			start_pixels[2] = saturate_cast<uchar>(bw);*/

			// 饱和度提升会更亮些
			start_pixels[0] = saturate_cast<uchar>(1.2f * b);
			start_pixels[1] = saturate_cast<uchar>(1.2f * g);
			start_pixels[2] = saturate_cast<uchar>(1.2f * r);

			start_pixels += 3;
		}
	}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值