OpenCV4教程——4.1 窗口相关操作

目标

对窗口进行操作。涉及 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                  无返回值。

扫描二维码关注公众号,回复: 10409389 查看本文章

调用例子

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()

运行的效果是一样的,就不放过程了。

发布了268 篇原创文章 · 获赞 309 · 访问量 108万+

猜你喜欢

转载自blog.csdn.net/justidle/article/details/105239950
今日推荐