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;
}
- 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 数组属性和方法
- IDEA多线程调试
- 为什么wait和notify方法要在同步块中调用?
- 一文说清楚Mysql Innodb的B+树索引原理及其推理过程
- [Oracle数据泵全解析]expdp交互式命令行模式命令
- SpringBoot Feign文件上传
- Docker_000
- 如何应对面试官的JVM调优问题
- Docker_001
- Docker_002
- [PyQt Tutorial]2.一个Hello World程序
- Oracle设置开机自启
- Go_学习之Docke容器
- zabbix 监控项
- [PyQt Tutorial]4.使用Qt Designer
- [PyQt Tutorial]5.Signals & Slots(信号与槽)