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、图像的加载、修改与保存)相关推荐

  1. [OpenCV学习笔记3][图像的加载+修改+显示+保存]

    正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...

  2. 【OpenCV学习笔记之一】图像加载,修改及保存

    加载图像(用cv::imread) imread功能是加载图像文件成为一个Mat对象 其中第一个参数表示图像文件名称 第二个参数 表示加载的图像是什么类型 支持常见的三个参数值 IMREAD_UNCH ...

  3. OpenCV图像的加载、显示

    OpenCV图像的加载.显示 Mat类是OpenCV里使用广泛的一个类,使用它可以轻松的用几行代码实现图像的加载.显示. 先上代码: // OpenCV_self.cpp : 此文件包含 " ...

  4. OpenCV学习2--图片的加载,修改与保存

    OpenCV学习2--图片的加载,修改与保存 转自https://blog.csdn.net/qq_16481211/article/details/79553335 之前安装配置好OpenCV的环境 ...

  5. C++ 和 OpenCV 实现卷积神经网络并加载 Keras 训练好的参数进行预测

    C++ 和 OpenCV 实现卷积神经网络并加载 Keras 训练好的参数进行预测 一. 背景 二. Keras 定义神经网络结构 channels_first 与 channels_last cha ...

  6. Opencv 图像处理:图像通道、直方图与色彩空间

    本文已收录于Opencv系列专栏: 深入浅出OpenCV ,专栏旨在详解Python版本的Opencv,为计算机视觉的开发与研究打下坚实基础.免费订阅,持续更新. 文章目录 1.图像通道 通道分离 通 ...

  7. html加载超大像素图片,html – 首先加载低分辨率背景图像,然后加载高分辨率图像...

    这是我使用的方法 CSS: #div_whatever { position: whatever; background-repeat: no-repeat; background-position: ...

  8. C# OpenCV人脸检测(三) DNN加载FaceDetectorYN模型做人脸检测

    点击下方卡片,关注"OpenCV与AI深度学习"公众号 视觉/图像重磅干货,第一时间送达 本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍C# OpenCV人 ...

  9. 《OpenCv视觉之眼》Python图像处理二十一:Opencv图像处理之图像线性变换和非线性变换的方法及原理

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  10. glide 加载webp_如何使您的网站通过WebP图像快速加载闪电

    glide 加载webp by Carmen Chung 通过钟Car 如何使您的网站通过WebP图像快速加载闪电 (How to make your website load lightning f ...

最新文章

  1. F5荣获网络优化类别年度最佳HP AllianceOne合作伙伴奖项
  2. oracle 考试技巧,从 TPCH 测试学习性能优化技巧之 Q14
  3. freertos之任务
  4. Maven-dependencyManagement与import
  5. 安装navicat之后双击就会闪退_win2012,2016 能安装oracle 10g吗?
  6. Linux-Shell脚本编程-学习-4-Shell编程-操作数字-加减乘除计算
  7. mysql表情存储报错问题
  8. 计算机字体原理,字体科普文:认识最基础的字体结构 -电脑资料
  9. java编程入门到精通课后答案,附源代码
  10. whitening(白化)
  11. 怎样更改itunes备份位置_正确修改itunes备份文件路径方法
  12. 读书笔记—趁年轻,折腾吧
  13. 数控编程也是c语言吗,学数控编程需要使用个人电脑吗
  14. 【前端程序员的中秋节】中秋节,送你千盏孔明灯,万家灯火故事长
  15. 解决: void SendDelegateMessage(NSInvocation *): delegate (webView:decidePolicyForNavigationAction:requ
  16. 新款Macbook Pro可以升级固态硬盘吗?
  17. hylafax php,运用PHP发送传真(PHP code for Sending fax)
  18. 18位身份证号码最后一位校验
  19. 【机器学习】手写识别系统
  20. 茶文化网站html模板,茶文化网页模板图片

热门文章

  1. 【Elasticsearch】Mapping APIs
  2. 《MySQL必知必会》学习笔记——第八章(用通配符过滤)
  3. QCombox隐藏某一项
  4. 统计在线人数访问人数
  5. 【java与移动智能设备】高级用户组件
  6. ssd trim linux,linux – 使用SSD上的BtrFS验证TRIM支持
  7. Lua中的聊天屏蔽敏感词汇
  8. 原生js ajax请求有几个步骤?分别是什么
  9. 多显示器 坐标 左上角_也许是你的第一台专业显示器,隶属华硕ProArt创意国度的PA248QV...
  10. 解决IDEA中maven搭建web项目,在maven中有依赖但是在部署包中生成不出依赖