C++下OpenCV学习笔记
----HighGUI图形用户界面函数
文章目录
头文件&命名空间:
#include<opencv2/opencv.hpp>
using namespace cv;
一.图像输入:imread()
- 原型
| Mat imread(const string& filename,int flags = IMREAD_COLOR); |
第一个参数,const string&类型的filename,表示需要载入的图片路径名
支持:(1)Windows位图:*.bmp, *.dib (2)JPEG文件:*.jpeg, *.jpg, *.jpe
(3)JPEG2000文件:*.jp2 (4)PNG文件:*.png
(5)便携文件格式:*.pbm,*.pgm,*.ppm (6)Sun rasters光栅文件:*.sr,*.ras
(7)TIFF文件:*.tiff,*.tif
第二个参数,int类型的flags,表示载入的标识,默认为1
常用标识符:(1)CV_LOAD_IMAGE_GRAYSCALE,等价取值0,将图像转为灰度再返回
(2)CV_LOAD_IMAGE_COLOR,等价取值1,将图像转为彩色再返回
(3)CV_LOAD_IMAGE_ANYDEPTH,等价取值2,若载入的图像深度为12位/32位,就返回对应深度的图像,否则返回8位图像再返回
即flags>0返回3通道的彩色图像;flags=0返回灰度图像;flags<0返回包含Alpha通道的加载图像
- 代码实现
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat srcImage = imread("C:\\Users\\441\\Desktop\\ZL\\夏目\\1.jpg");
imshow("原图",srcImage);
waitKey(0);
return 0;
}
- 运行结果
二.图像显示:imshow()
- 原型
| void imshow(const string& winname, InputArray mat); |
第一个参数:const string&类型的winname,表示需要显示的窗口标识名称
第二个参数:InputArray类型的mat,表示需要显示的图像
- 代码实现&运行结果
同imread()函数。 - attention:
imshow之后必须有waitKey函数,否则显示窗内将一闪而过,不会驻留屏幕。
waitKey(0); 不关闭窗口waitKey(5000); 等待5秒后关闭
三.创建窗口:namedWindow()
- 原型
| void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE ); |
第一个参数:const string&型的name,表示被用作窗口的标识符的窗口名称。
第二个参数:int类型的flags,表示窗口的标识。
常用标识符:(1)WINDOW_NORMAL,表示用户可以改变窗口大小。【OpenCV2中为CV_WINDOW_NORMAL】
(2)WINDOW_AUTOSIZE,表示窗口会自动调整大小以适应图像,用户不可以改变窗口大小。【OpenCV2中为CV_WINDOW_AUTOSIZE】
(3)WINDOW_OPENGL,表示窗口创建时会支持OpenGL。【OpenCV2中为CV_WINDOW_OPENGL】
(4)WINDOW_FULLSCREEN,表示全屏显示图片。
(5)WINDOW_FREERATIO,表示调整图像尺寸以充满窗口。
(6)WINDOW_KEEPRATIO,表示保持图像比例。
(7)WINDOW_GUI_EXPANDED,表示创建的窗口允许添加工具栏和状态栏。
(8)WINDOW_GUI_NORMAL,表示创建没有状态栏和工具栏的窗口。
- 代码实现
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
namedWindow("图1",WINDOW_NORMAL);
waitKey(0);
return 0;
}
- 运行结果
- attention:
调用destroyWindow()或者destroyAllWindows()函数来关闭窗口。
destroyWindow();destroyAllWindows();
四.输出图像到文件:imwrite()
- 原型
| bool imwrite(const string& filename, InputArray img, const vector& params = vector() ); |
第一个参数:const string&类型的filename,表示需要写入的文件名。【记得带上后缀】
第二个参数:InputArray类型的img,一般填一个Mat类型的图像数据。
第三个参数:const vector&类型的params,默认值vector()。表示为特定格式保存的参数编码。【一般不需要填写】
填写:
(1)JPEG/JPG格式的图片:参数表示从0到100的图片质量(IMWRITE_JPEG_QUALITY),默认值95.
(2)PNG格式的图片:参数表示压缩级别(IMWRITE_PNG_COMPRESSION)从0到9,较高的值意味着更小的尺寸和更长的压缩时间,默认值3
(3)PPM,PGM,BGM格式的图片,参数表示一个二进制格式标志(IMWRITE_PXM_BINARY),取值为0或1,默认值1
(1)JPEG/JPG
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_JPEG_QUALITY);
compression_params.push_back(95


541

被折叠的 条评论
为什么被折叠?



