1. VS 安装、配置Opencv的环境
我们是在 windows的VS中开发 使用功能的方式是:头文件+dll文件的方式来学习opencv的一些常见使用方法。
- 下载 opencv.exe 并解压
- 生成->配置管理器->平台修改为
x64 - 配置windows环境变量:path :
opencv解压目录\build\x64\vc14\bin - 配置头文件包含目录:
调试->xx属性->配置属性->VC++ 目录->包含目录:opencv解压目录\build\include - 配置库目录:
调试->xx属性->配置属性->VC++ 目录->库目录:opencv解压目录\build\x64\vc14\lib - 链接器:
opencv解压目录\build\x64\vc14\lib中的opencv_world440d.lib复制文件名至
调试->xx属性->配置属性->VC++ 目录->链接器->输入->附加依赖项。
注意:带d的适用于debug模式,不带d的使用于release模式 - .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;
}
}
本文详细介绍如何在Windows环境下使用Visual Studio安装配置Opencv环境,并通过示例代码展示如何利用Opencv进行图片处理,包括彩色图转灰度图、黑白图及调整饱和度等操作。
922

被折叠的 条评论
为什么被折叠?



