OpenCV-图像处理(01、图像的加载、修改与保存)
1. 加载图像(用cv::imread)
Mat imread(const string& filename,int flags=1)
- 函数介绍:函数imread返回的值Mat对象,如果读取文件失败,函数会返回一个空矩阵,那么 srcImage.data 的值是 NULL,因此正常读取完文件后,我们可以利用 srcIamge.data 或 srcImage.enpty() 函数进行返回值检查,以确保文件正常载入。
- 参数介绍:imread 功能是加载图像文件成为一个 Mat 对象,其中第一个参数表示 图像文件名称 。第二个参数表示 读取图像的颜色类型(默认参数是1) ,返回3通道图像,支持常见的三个参数值:
IMREAD_UNCHANGED :表示加载原图,不做任何改变
IMREAD_GRAYSCALE :表示把原图作为灰度图像加载进来
IMREAD_COLOR :表示函数返回为单色图像
另外,flags可设置为0、大于0、小于0
0:该函数返回单通道图像
大于0:函数强制返回3通道图像
小于0:函数不对图像进行通道转化
OpenCV支持JPG、PNG、TIFF等常见格式图像文件加载
- 案例代码:
#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(){Mat src=imread("E:/Experiment/OpenCV/Pictures/boy1.jpg");//加载图片,第二个参数默认是1//CV_LOAD_IMAGE_ANYDEPTH:表示返回16bit或32bit图像(当输入时相同深度时),否则返回8bit图像src=imread("E:/Experiment/OpenCV/Pictures/boy1.jpg",CV_LOAD_IMAGE_ANYDEPTH);//CV_LOAD_IMAGE_COLOR:表示函数返回为单色图像src=imread("E:/Experiment/OpenCV/Pictures/boy1.jpg",CV_LOAD_IMAGE_COLOR);//CV_LOAD_IMAGE_GRAYSCALE:表示函数返回为通道图像src=imread("E:/Experiment/OpenCV/Pictures/boy1.jpg",CV_LOAD_IMAGE_GRAYSCALE);if(src.empty()){//检测图片printf("could not load image...");return -1;}namedWindow("output windows",CV_WINDOW_AUTOSIZE);imshow("output windows",src);//显示图片waitKey(0);return 0;
}
2. 显示图像(cv::namedWindows 与cv::imshow)
namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它。常见用法:
namedWindow(“Window Title”, WINDOW_AUTOSIZE)
WINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小
WINDOW_NORMAL,跟QT集成的时候会使用,允许修改窗口大小。
void imshow(const string& winname, InputArray mat);
imshow根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口名称,第二参数是Mat对象。案例代码(见上)
3. 修改图像 (cv::cvtColor)
cvtColor( image, gray_image, COLOR_BGR2GRAY );
cvtColor的功能是把图像从一个彩色空间转换到另外一个色彩空间,有三个参数,
第一个参数表示源图像、
第二参数表示色彩空间转换之后的图像、
第三个参数表示源和目标色彩空间如:COLOR_BGR2HLS 、COLOR_BGR2GRAY 等案例代码:
#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(){Mat src=imread("E:/Experiment/OpenCV/Pictures/boy1.jpg");//加载图片,第二个参数默认是1if(src.empty()){//检测图片printf("could not load image...");return -1;}//namedWindow("output windows",CV_WINDOW_AUTOSIZE);//imshow("output windows",src);//显示图片Mat img1,img2;cvtColor(src,img1,COLOR_RGB2BGR);cvtColor(src,img2,COLOR_RGB2HLS);namedWindow("output1",CV_WINDOW_AUTOSIZE);namedWindow("output2",CV_WINDOW_AUTOSIZE);imshow("output1",img1);imshow("output2",img2);waitKey(0);return 0;
}
- 运行结果:
4. 保存图像(cv::imwrite)
bool imwrite( const string& filename, InputArray img, const vector& params=vector() )
- 保存图像文件到指定目录路径
- 只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像才可以通过这种方式保存
- 保存PNG格式的时候可以保存透明通道的图片
- 可以指定压缩参数
#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(){Mat src=imread("E:/Experiment/OpenCV/Pictures/boy1.jpg");//加载图片,第二个参数默认是1if(src.empty()){//检测图片printf("could not load image...");return -1;}namedWindow("output windows",CV_WINDOW_AUTOSIZE);imshow("output windows",src);//显示图片imwrite("E:/abc.jpg",src);//保存图片waitKey(0);return 0;
}
OpenCV-图像处理(01、图像的加载、修改与保存)相关推荐
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- 【OpenCV学习笔记之一】图像加载,修改及保存
加载图像(用cv::imread) imread功能是加载图像文件成为一个Mat对象 其中第一个参数表示图像文件名称 第二个参数 表示加载的图像是什么类型 支持常见的三个参数值 IMREAD_UNCH ...
- OpenCV图像的加载、显示
OpenCV图像的加载.显示 Mat类是OpenCV里使用广泛的一个类,使用它可以轻松的用几行代码实现图像的加载.显示. 先上代码: // OpenCV_self.cpp : 此文件包含 " ...
- OpenCV学习2--图片的加载,修改与保存
OpenCV学习2--图片的加载,修改与保存 转自https://blog.csdn.net/qq_16481211/article/details/79553335 之前安装配置好OpenCV的环境 ...
- C++ 和 OpenCV 实现卷积神经网络并加载 Keras 训练好的参数进行预测
C++ 和 OpenCV 实现卷积神经网络并加载 Keras 训练好的参数进行预测 一. 背景 二. Keras 定义神经网络结构 channels_first 与 channels_last cha ...
- Opencv 图像处理:图像通道、直方图与色彩空间
本文已收录于Opencv系列专栏: 深入浅出OpenCV ,专栏旨在详解Python版本的Opencv,为计算机视觉的开发与研究打下坚实基础.免费订阅,持续更新. 文章目录 1.图像通道 通道分离 通 ...
- html加载超大像素图片,html – 首先加载低分辨率背景图像,然后加载高分辨率图像...
这是我使用的方法 CSS: #div_whatever { position: whatever; background-repeat: no-repeat; background-position: ...
- C# OpenCV人脸检测(三) DNN加载FaceDetectorYN模型做人脸检测
点击下方卡片,关注"OpenCV与AI深度学习"公众号 视觉/图像重磅干货,第一时间送达 本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍C# OpenCV人 ...
- 《OpenCv视觉之眼》Python图像处理二十一:Opencv图像处理之图像线性变换和非线性变换的方法及原理
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
- glide 加载webp_如何使您的网站通过WebP图像快速加载闪电
glide 加载webp by Carmen Chung 通过钟Car 如何使您的网站通过WebP图像快速加载闪电 (How to make your website load lightning f ...
最新文章
- F5荣获网络优化类别年度最佳HP AllianceOne合作伙伴奖项
- oracle 考试技巧,从 TPCH 测试学习性能优化技巧之 Q14
- freertos之任务
- Maven-dependencyManagement与import
- 安装navicat之后双击就会闪退_win2012,2016 能安装oracle 10g吗?
- Linux-Shell脚本编程-学习-4-Shell编程-操作数字-加减乘除计算
- mysql表情存储报错问题
- 计算机字体原理,字体科普文:认识最基础的字体结构 -电脑资料
- java编程入门到精通课后答案,附源代码
- whitening(白化)
- 怎样更改itunes备份位置_正确修改itunes备份文件路径方法
- 读书笔记—趁年轻,折腾吧
- 数控编程也是c语言吗,学数控编程需要使用个人电脑吗
- 【前端程序员的中秋节】中秋节,送你千盏孔明灯,万家灯火故事长
- 解决: void SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:requ
- 新款Macbook Pro可以升级固态硬盘吗?
- hylafax php,运用PHP发送传真(PHP code for Sending fax)
- 18位身份证号码最后一位校验
- 【机器学习】手写识别系统
- 茶文化网站html模板,茶文化网页模板图片
热门文章
- 【Elasticsearch】Mapping APIs
- 《MySQL必知必会》学习笔记——第八章(用通配符过滤)
- QCombox隐藏某一项
- 统计在线人数访问人数
- 【java与移动智能设备】高级用户组件
- ssd trim linux,linux – 使用SSD上的BtrFS验证TRIM支持
- Lua中的聊天屏蔽敏感词汇
- 原生js ajax请求有几个步骤?分别是什么
- 多显示器 坐标 左上角_也许是你的第一台专业显示器,隶属华硕ProArt创意国度的PA248QV...
- 解决IDEA中maven搭建web项目,在maven中有依赖但是在部署包中生成不出依赖