opencv中关于窗口的建立与显示的一些api

发布于:2023-01-16 ⋅ 阅读:(225) ⋅ 点赞:(0)

今天一共学习了4个api,分别是:
在这里插入图片描述

下面我从函数的参数一一介绍:由于这几个函数是一起使用的,所以介绍完各函数的使用后,统一用代码展示。

我们先来看第一个 : namedWindow();
当你把这个函数输入vs中,它会提示你需要输入参数的类型:

在这里插入图片描述

通过图片我们可以知道,namedWindow的第一个参数是string类型winname,翻译过来就是窗口的名字,

第二个参数我们转到定义,在vs中鼠标右击这个函数,选择GO TO Definition
在这里插入图片描述

可以看到:也就是第二个参数默认是WINDOW_AUTOSIZE(也就是说第二个参数你可以不写),翻译过来就是窗口自动大小,在这里它的作用就是窗口大小跟随图片,并且大小不可修改。

在这里插入图片描述

这时你返回你自己写的代码,在写入代码时你会发现跳出一些可选选项,除了刚才默认的WINDOW_AUTOSIZE(窗口大小不可修改),这里再介绍几个其他常用选项,
如:WINDOW_NORMAL(窗口大小可以修改,如:通过resizeWindow(),在第四个函数中介绍),WINDOW_FREERATIO(窗口大小可以修改,同)。
在这里插入图片描述

二:imshow();
该函数就是image+show 也就是图像显示,通过vs提示,我们可以知道,第一个参数还是窗口的名字,第二个参数是图像矩阵(就是一个Mat的对象)。

在这里插入图片描述

学会imshow()后,已经可以将图片显示在屏幕上了,但还差一步,也就是waitKey();

在这里插入图片描述

有提示可知,这里面填一个int型,作用是delay 也就是延迟,单位是毫秒,如果你想要让窗口一直显示,那你填入0即可。

三:destroyAllWindows();
作用顾名思义,销毁所有窗口,避免资源浪费。

四:resizeWindow();
第一个参数:窗口名字,第二个和第三个参数为 长和宽。
在resizeWindow()使用时,需注意你的namedWindow()里第二个参数,必须是可以修改窗口大小,否则该函数无效。

下面是代码展示:

#include<opencv2\opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main()
{
	//关于窗口的建立与显示的一些api
	Mat img;
	img = imread("D:\\photogallery\\image_6.png");

	namedWindow("显示窗口",WINDOW_AUTOSIZE);

	//resizeWindow("显示窗口", 640, 480);
	imshow("显示窗口", img);

    waitKey(0);
	destroyAllWindows();

	return 0;
}

运行结果如图:

在这里插入图片描述

图片非常大 ,下面我们用resizewindow调整一下大小(记得namewindow里的参数也要变):

#include<opencv2\opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main()
{
	//关于窗口的建立与显示的一些api
	Mat img;
	img = imread("D:\\photogallery\\image_6.png");

	namedWindow("显示窗口",WINDOW_NORMAL);

	resizeWindow("显示窗口", 480, 560);
	imshow("显示窗口", img);

    waitKey(0);
	destroyAllWindows();

	return 0;
}

运行结果:

在这里插入图片描述

小萌新今天的更新就完了,欢迎在评论区讨论。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到