目录
1.实验原理
销毁某一个指定名称的窗口 destoryWindow
函数原型
Destroys a window.
void destroyWindow(const string& winname);
含义
功能: 销毁指定名称的窗口。
参数:
const string& winname: 一个字符串,表示要销毁的窗口的名称。这是用于标识窗口的唯一名称。
返回值:
该函数没有返回值,其类型为 void。
行为
查找与 winname 参数匹配的窗口。
销毁找到的窗口,包括释放与该窗口相关的所有资源。
销毁所有新建的窗口 destoryAllWindows
函数原型
Destroys all of the HighGUI windows.
void destroyAllWindows();
含义
功能: 销毁所有由 OpenCV 创建的 HighGUI 窗口。
参数:
无参数。
返回值:
该函数没有返回值,其类型为 void。
行为
销毁所有当前打开的 HighGUI 窗口,包括释放与这些窗口相关的所有资源。
sprintf_s函数
在C++中,sprintf_s 是一个用于格式化字符串的函数,通常用于将数据转换成字符串形式。这段代码使用的是微软的安全版本 sprintf_s,它是在标准 sprintf 函数的基础上增加了安全特性,以防止缓冲区溢出。
这段代码的具体含义如下:
szName:这是一个字符数组(通常是 char 类型),用来存放格式化后的字符串。
%d.jpg:这是格式化字符串,其中 %d 是一个占位符,表示这里将被一个整数所替换;.jpg 则是字符串的一部分,会被直接添加到结果中。
i+1:这是一个表达式,计算得到的整数值将会被插入到 %d 的位置上。
整体来看,这行代码的功能是将整数 i+1 转换为字符串,并且追加 .jpg 后缀,最终结果存储在 szName 中。例如,如果 i 的值为 5,则最终 szName 的内容会是 "6.jpg"。
2.实验代码
// test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <opencv2/highgui/highgui_c.h>
#include <opencv2\opencv.hpp>
//#pragma comment(lib, "opencv_world450d.lib") //引用引入库
using namespace cv;
#include<iostream>
using namespace std;
int main()
{
//图像源输入
vector<Mat>srcImage(5);
char szName[50] = "";
for (int i = 0; i < srcImage.size(); i++)
{
sprintf_s(szName, "%d.jpg", i+1);
srcImage[i] = imread(szName);
if (srcImage[i].empty())
{ //判断当前vector读入的正确性
cout << "read "<< szName<<" error" << endl;
return -1;
}
//调用 单窗口显示图像
namedWindow(szName, WINDOW_AUTOSIZE);
imshow(szName, srcImage[i]);//在“窗口1”这个窗口输出图片。
waitKey(5000);//等待5秒,程序自动退出。改为0,不自动退出。
destroyWindow(szName);
}
//destroyAllWindows();
cout << "所有的窗口已经销毁了" << endl;
waitKey(0);
system("pause");
return 0;
}