C++下OpenCV学习笔记----HighGUI图形用户界面函数

C++下OpenCV学习笔记

----HighGUI图形用户界面函数


头文件&命名空间:

#include<opencv2/opencv.hpp>
using namespace cv;
一.图像输入:imread()
  1. 原型
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通道的加载图像

  1. 代码实现
#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;
}
  1. 运行结果
二.图像显示:imshow()
  1. 原型
void imshow(const string& winname, InputArray mat);

第一个参数:const string&类型的winname,表示需要显示的窗口标识名称
第二个参数:InputArray类型的mat,表示需要显示的图像

  1. 代码实现&运行结果
    同imread()函数。
  2. attention:
    imshow之后必须有waitKey函数,否则显示窗内将一闪而过,不会驻留屏幕。
    waitKey(0); 不关闭窗口     waitKey(5000); 等待5秒后关闭
三.创建窗口:namedWindow()
  1. 原型
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,表示创建没有状态栏和工具栏的窗口。

  1. 代码实现
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
   
   
    namedWindow("图1",WINDOW_NORMAL);
    waitKey(0);
    return 0;
}
  1. 运行结果
  2. attention:
    调用destroyWindow()或者destroyAllWindows()函数来关闭窗口。
    destroyWindow();     destroyAllWindows();
四.输出图像到文件:imwrite()
  1. 原型
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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X to Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值