目标
对窗口进行操作。涉及 namedWindow()、resizeWindow() 、destroyWindow() 和 destroyAllWindows() 四个函数。
创建窗口
作用
创建指定名字的窗口。如果该名字窗口已经存在,则直接返回。
头文件
C++
#include <opencv2/highgui.hpp>
函数原型
C++
void cv::namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE)
Python
None = cv.namedWindow(winname[, flags])
输入参数
winname 要创建的窗口名字
flags 标志
返回值
void 无返回值。
调用例子
C++
cv::namedWindow("WinName");
Python
cv.namedWindow('WinName')
调整窗口大小
作用
调整指定名字窗口大小。
头文件
C++
#include <opencv2/highgui.hpp>
函数原型
C++
void cv::resizeWindow(const String& winname,
int width,
int height);
void cv::resizeWindow(const String& winname,
const cv::Size &size);
Python
None = cv.resizeWindow(winname, width, height)
None = cv.resizeWindow(winname, size)
输入参数
winname 窗口名字
width 调整后窗口宽度,单位为 pixel
height 调整后窗口高度,单位为 pixel
size 调整后窗口尺寸,单位为 pixel
返回值
void 无返回值。
调用例子
C++
cv::resizeWindow("WinName", 100, 200);
cv::resizeWindow("WinName", cv::Size(100, 200));
Python
cv.resizeWindow("WinName", 100, 200);
cv.resizeWindow("WinName", cv.Size(100, 200));
删除指定窗口
作用
删除指定名字的窗口。如果该名字窗口不存在,则直接返回。
头文件
C++
#include <opencv2/highgui.hpp>
函数原型
C++
void cv::destroyWindow(const String& winname)
Python
None = cv.destroyWindow(winname)
输入参数
winname 要删除的窗口名字
返回值
void 无返回值。
调用例子
C++
cv::destroyWindow("WinName");
Python
cv.destroyWindow('WinName')
删除所有窗口
作用
删除所有的 HighGUI 窗口。
头文件
C++
#include <opencv2/highgui.hpp>
函数原型
C++
void cv::destroyAllWindows()
Python
None = cv.destroyAllWindows()
输入参数
无
返回值
void 无返回值。
调用例子
C++
cv::destroyAllWindows();
Python
cv.destroyWindow()
完整例子
C++
#include <opencv2/highgui.hpp>
#if defined(_DEBUG)
#pragma comment(lib, "opencv_world420d.lib")
#else
#pragma comment(lib, "opencv_world420.lib")
#endif
using namespace cv;
int main(int argc, char** argv) {
// Create a window for display.
cv::namedWindow("Window0", cv::WINDOW_AUTOSIZE);
cv::waitKey(0); // Wait for a keystroke in the window
// 调整窗口大小为100, 200
cv::resizeWindow("Window0", 100, 200);
cv::waitKey(0); // Wait for a keystroke in the window
// 调整窗口大小为100, 100
cv::resizeWindow("Window0", cv::Size(100, 100));
cv::waitKey(0); // Wait for a keystroke in the window
// Create a window for display.
cv::namedWindow("Window1", cv::WINDOW_AUTOSIZE);
cv::waitKey(0); // Wait for a keystroke in the window
// 调整窗口大小为200, 200
cv::resizeWindow("Window1", 200, 200);
cv::waitKey(0); // Wait for a keystroke in the window
// Create a window for display.
cv::namedWindow("Window2", cv::WINDOW_AUTOSIZE);
cv::waitKey(0); // Wait for a keystroke in the window
// 调整窗口大小为300, 300
cv::resizeWindow("Window2", 300, 300);
cv::waitKey(0); // Wait for a keystroke in the window
// 删除Window1
cv::destroyWindow("Window1");
cv::waitKey(0); // Wait for a keystroke in the window
// 删除所有窗口
cv::destroyAllWindows();
return 0;
}
在 VS2017 中的运行效果如下所示:
Python3
# -*- coding:UTF-8 -*-
import cv2
def main():
# Create a window for display.
cv2.namedWindow("Window0", cv2.WINDOW_AUTOSIZE)
cv2.waitKey(0); # Wait for a keystroke in the window
# 调整窗口大小为100, 200
cv2.resizeWindow("Window0", 100, 200);
cv2.waitKey(0); # Wait for a keystroke in the window
# 调整窗口大小为100, 100
cv2.resizeWindow("Window0", (100, 100));
cv2.waitKey(0); # Wait for a keystroke in the window
# Create a window for display.
cv2.namedWindow("Window1", cv2.WINDOW_AUTOSIZE);
cv2.waitKey(0); # Wait for a keystroke in the window
# 调整窗口大小为200, 200
cv2.resizeWindow("Window1", 200, 200);
cv2.waitKey(0); # Wait for a keystroke in the window
# Create a window for display.
cv2.namedWindow("Window2", cv2.WINDOW_AUTOSIZE);
cv2.waitKey(0); # Wait for a keystroke in the window
# 调整窗口大小为300, 300
cv2.resizeWindow("Window2", 300, 300);
cv2.waitKey(0); # Wait for a keystroke in the window
# 删除Window1
cv2.destroyWindow("Window1");
cv2.waitKey(0); # Wait for a keystroke in the window
# 删除所有窗口
cv2.cv2.destroyAllWindows();
#当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行
if __name__ == '__main__':
main()
运行的效果是一样的,就不放过程了。