今天一共学习了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;
}
运行结果:
小萌新今天的更新就完了,欢迎在评论区讨论。