OpenCV3 图像的加载、修改、显示与保存
时间:2022-07-22
本文章向大家介绍OpenCV3 图像的加载、修改、显示与保存,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
OpenCV 图像加载、修改、显示与保存
图像加载
cv::imread
-
imread
功能是加载图像文件成为一个Mat
对象, - 第一个参数表示图像文件名称
- 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值
-
IMREAD_UNCHANGED
(<0) 表示加载原图,不做任何改变 -
IMREAD_GRAYSCALE
( 0)表示把原图作为灰度图像加载进来 -
IMREAD_COLOR
(>0) 表示把原图作为RGB图像(实际顺序为BGR)加载进来。
-
注意:OpenCV支持
JPG
、PNG
、TIFF
等常见格式图像文件加载。
图像修改
cv::cvtColor
-
cvtColor
的功能是把图像从一个彩色空间转换到另外一个色彩空间,有三个参数,第一个参数表示源图像、第二参数表示色彩空间转换之后的图像、第三个参数表示源和目标色彩空间如:COLOR_BGR2HLS
、COLOR_BGR2GRAY
等 -
cvtColor(image, gray_image, COLOR_BGR2GRAY)
;
图像显示
cv::namedWindos
与cv::imshow
-
namedWindos
功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它。 - 常见用法
namedWindow("Window Title", WINDOW_AUTOSIZE)
-
WINDOW_AUTOSIZE
会自动根据图像大小,显示窗口大小,不能人为改变窗口大小 -
WINDOW_NORMAL
,跟QT
集成的时候会使用,允许修改窗口大小。 -
imshow
根据窗口名称显示图像到指定的窗口上去,第一个参数是窗口名称,第二参数是Mat
对象
图像保存
cv::imwrite
- 保存图像文件到指定目录路径
- 只有8位、16位的
PNG
、JPG
、Tiff
文件格式而且是单通道或者三通道的BGR
的图像才可以通过这种方式保存 - 保存
PNG
格式的时候可以保存透明通道的图片 - 可以指定压缩参数
参考代码
#include<opencv2/opencv.hpp>
#include<highgui.h>
using namespace cv;
int main(int argc, char** argv)
{
// 读入图片(默认采用BGR读入)
Mat image = imread("cat.jpg");
if (!image.data) {
printf("could not load image...n");
return -1;
}
// 修改图片
Mat invertImage;
cvtColor(image,invertImage,CV_BGR2GRAY);
// 创建两个窗口
namedWindow("My Test", CV_WINDOW_AUTOSIZE);
namedWindow("My Invert Image", CV_WINDOW_AUTOSIZE);
// 在对应窗口显示图像
imshow("My Test", image);
imshow("My Invert Image", invertImage);
// 保存图像
imwrite("./reslut.jpg",invertImage);
// 关闭
waitKey(0);
destroyWindow("My Test");
destroyWindow("My Invert Image");
return 0;
}
- Linux进程间通信(五) - 信号灯(史上最全)及其经典应用案例
- 写出完美的snprintf
- 计算CPU利用率
- 详解Hadoop HA 如何运作
- Linux时间时区详解与常用时间函数
- 基于Linux整形时间的常用计算思路
- 如何追踪每一笔记录的来龙去脉:一个完整的Audit Logging解决方案[上篇]
- WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?
- Linux64位程序移植
- history命令使用方法详解
- Linux删除乱码文件的方法
- 和智能机器一起工作,而不是惧怕它们
- Hulu大数据架构与应用经验
- SQL Server 2005:一个使用新创建的User的问题和解决方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 优秀开源AI框架推荐
- python中常见错误及解决方法
- tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
- Python如何实现后端自定义认证并实现多条件登陆
- safari下载文件自动加了html后缀问题
- yii2 上传图片的示例代码
- DataFrame.groupby()所见的各种用法详解
- keras训练曲线,混淆矩阵,CNN层输出可视化实例
- Pandas缺失值2种处理方式代码实例
- ThinkPHP5 的简单搭建和使用详解
- PyInstaller运行原理及常用操作详解
- php使用curl模拟浏览器表单上传文件或者图片的方法
- Python轻量级web框架bottle使用方法解析
- 详解在YII2框架中使用UEditor编辑器发布文章
- 基于python和flask实现http接口过程解析