【opencv】2.图像读取、显示、输出
看得见的东西往往使我们更有兴致,从看得见的开始学
【一】头文件和名字空间
你可以直接包含整个opencv的所有文件,也可以按需包含各个模块文件,模块结构的划分可以参考博文:opencv模块结构划分,这个以后可以慢慢了解,现在我们暂时包含整个opencv的所有文件吧。opencv的使用了独立的名字空间cv。代码如下:
#include <opencv2/opencv.hpp>
using namespace cv;
【二】图片读取
读取函数是imread()
函数原型:
Mat imread(const string& filename,intflags=1 );
输入:参数1为图像路径和图片名,参数2为图像颜色类型
输出:一个mat,这是一个表示图像的类。
附:–>opencv支持的图片类型为有如下几种
Windows位图 - .bmp, .dib
JPEG文件 - .jpeg, .jpg, .jpe
JPEG 2000文件- .jp2
PNG图片 - .png
Sun rasters光栅文件 - .sr, .ras
TIFF 文件 - .tiff, .tif
–>参数2取值:
CV_LOAD_IMAGE_UNCHANGED-,这个标识在新版本中被废置了,忽略。
CV_LOAD_IMAGE_ANYDEPTH- 如果取这个标识的话,若载入的图像的深度为16 位或者32位,就返回对应深度的图像,否则,就转换为8位图像再返回。
CV_LOAD_IMAGE_COLOR- 如果取这个标识的话,总是转换图像到彩色一体
CV_LOAD_IMAGE_GRAYSCALE- 如果取这个标识的话,始终将图像转换成灰度1
【三】图像显示
1.在显示图像之前,需要创建一个容纳图像的窗口,使用namedWindow()函数来创建窗口
函数原型:
void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
输入:
参数1为窗口名,也是窗口id,是窗口的唯一标识
参数2为窗口类型
附:
窗口类型
WINDOW_NORMAL:设置了这个值,用户便可以改变窗口的大小(没有限制)
WINDOW_AUTOSIZE:如果设置了这个值,窗口大小会自动调整以适应所显示的图像,并且不能手动改变窗口大小。
WINDOW_OPENGL: 如果设置了这个值的话,窗口创建的时候便会支持OpenGL。
2.图片显示函数imshow()
函数原型:
void imshow(const string& winname, InputArray mat);
输入:
参数1为窗口标识,输入之前创建的窗口名即可
参数2为要显示的图片(这里的InputArray将其简单看成一个mat类就行)
【四】图片输出
很多时候我们需要将处理之后的图片输出到文件中,可以使用imwrite()函数
函数原型:
bool imwrite(const string& filename,InputArray img, const vector<int>& params=vector<int>() );
输入:
参数1为文件名,其中可以包含文件路径,输出格式有文件扩展名决定,固需要加上文件扩展名
参数2为需要输出的图片,输入对应mat即可
参数3表示为特定格式保存的参数编码,主要是图片质量或压缩比之类的参数,一般可以缺省,见附。
输出:
是否输出成功的bool值。
附:
对于JPEG格式的图片,这个参数表示从0到100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95.
对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0到9。较高的值意味着更小的尺寸和更长的压缩时间,而默认值是3。
对于PPM,PGM,或PBM格式的图片,这个参数表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值为0或1,而默认值是1。
【五】一个综合的实例
#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;
int main(){const char* path = "F:/test.jpg";//从文件中读入图像Mat img = imread(path);//如果读入图像失败if (img.empty()){fprintf(stderr, "Can not load image %s\n", path);return -1;}//显示图像imshow("image", img);//输出文件imwrite("F:/output.jpg", img);//此函数等待按键,按键盘任意键就返回waitKey();return 0;
}
显示:
输出文件:
【opencv】2.图像读取、显示、输出相关推荐
- Python,OpenCV骨架化图像并显示(skeletonize)
Python,OpenCV骨架化图像并显示(skeletonize) 1. 效果图 2. 源码 参考: 1. 效果图 自己画一张图,原图 VS 骨架效果图如下: opencv logo原图 VS 骨架 ...
- OpenCV放大图像:多输出
OpenCV放大图像:多输出 放大图像:多输出 建造 示例的源代码 解释 设置标题和名称空间 创建Dnn Superres对象 阅读模型 设置模型 给出节点名称和缩放因子 放大图像 放大图像:多输出 ...
- OpenCV放大图像:单输出
OpenCV放大图像:单输出 放大图像:单输出 建造Building 解释 设置标题和名称空间 创建Dnn Superres对象 阅读模型 设置模型 放大图像 python中的一个例子 放大图像:单输 ...
- python 3.8.0版本的skimage库是什么_python的skimage库 图像读取显示
单幅图像读取并显示 代码 """ 读取图像并显示 """ import matplotlib.pyplot as plt import ma ...
- skimage 图像读取显示
单幅图像读取并显示 代码 """ 读取图像并显示 """ import matplotlib.pyplot as plt import ma ...
- matlab 图像读取长宽_计算机视觉学习笔记1 图像读取显示和尺寸变换
第一天,图像的读取,显示和尺寸变换 c++,python,MATLAB各实现一遍,以这个头骨图像为例吧 c++调用OpenCv实现图像显示和尺寸变换 c++用的编译器为clion,因此需要先配置cma ...
- DivX/XviD -opencv 视频文件读取显示问题解决
DivX DivX 是将影片的音频由MP3来压缩.视频由MPEG-4技术来压缩,最后再将两部分合成制作而成的.由于MP3和MPEG-4超强的压缩能力,使得影片的容量急剧减少,可以将一部2G大小的DVD ...
- python opencv读取视频没声音_python + opencv: 解决不能读取视频的问题
博主一开始使用python2.7和Opencv2.4.10来获取摄像头图像,程序如下: cap = cv2.VideoCapture(0) ret, frame = cap.read() 使用这个程序 ...
- opencv读取图像始终显示NoneType
1. 问题 项目需要用opencv实现图像的读取和变化,读取图像时却一直显示图像类型为NoneType, def data_aug(img_path,path,count):print(img_pat ...
最新文章
- Go 1.9 sync.Map揭秘
- 浅谈Java解决鸡兔同笼问题的思路
- linux系统正常停机的命令,Linux系统重启命令大全
- request mysql 接口_TP5接口开发
- DataDirectory是什么?
- 专题导读:高性能计算虚拟数据空间
- 关注电子商务网站开发-《网站中常用的Jquery插件》
- 解析json结构绘制canvas
- face++人脸识别源码
- GIS专业/GIS方向需要考那些证书
- 简图记录-番茄时间管理
- 一句话,读懂首席架构师、CTO和技术总监的区别
- 外贸大宗商品行业ERP管理解决方案
- Robust regression(稳健回归)
- [BJOI2019]勘破神机(斯特林数+二项式定理+数学)
- Word怎么在方框里面打对勾
- CISCO XRV-9K KVM虚机启动问题
- android webview 打开淘宝链接 error
- Swift Literal Convertibles
- Stk 10 软件获取卫星位置、高度角、方位角