- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
创建一个窗口。
函数 namedWindow
创建一个可以作为图像和跟踪条占位符的窗口。创建的窗口通过它们的名字来引用。
如果已经存在同名的窗口,函数不做任何事情。
你可以调用 cv::destroyWindow
或 cv::destroyAllWindows
来关闭窗口并释放任何关联的内存使用。对于一个简单的程序,实际上并不一定需要调用这些函数,因为在应用程序退出时,所有的资源和窗口都会由操作系统自动关闭。
注释
Qt 后端支持额外的标志:
- WINDOW_NORMAL 或 WINDOW_AUTOSIZE:WINDOW_NORMAL 允许你调整窗口大小,而 WINDOW_AUTOSIZE 自动调整窗口大小以适应显示的图像(参见 imshow),并且你不能手动更改窗口大小。
- WINDOW_FREERATIO 或 WINDOW_KEEPRATIO:WINDOW_FREERATIO 在不考虑图像比例的情况下调整图像,而 WINDOW_KEEPRATIO 保持图像的比例。
- WINDOW_GUI_NORMAL 或 WINDOW_GUI_EXPANDED:WINDOW_GUI_NORMAL 是旧的方式绘制窗口而不带状态栏和工具栏,而 WINDOW_GUI_EXPANDED 是一种新的增强的 GUI。默认情况下,标志等于 WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED。
函数原型
void cv::namedWindow
(
const String & winname,
int flags = WINDOW_AUTOSIZE
)
参数
- 参数winname 窗口标题栏中的窗口名称,可以用作窗口标识符。
- 参数flags 窗口的标志。支持的标志有:(cv::WindowFlags)
代码示例
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
// 加载图像
cv::Mat img = cv::imread( "/media/dingxin/data/study/OpenCV/sources/images/hawk.jpg", cv::IMREAD_COLOR );
if ( img.empty() )
{
std::cerr << "Error: Image not found!" << std::endl;
return -1;
}
// 创建窗口
std::string winname = "Example Window";
// 设置窗口属性:可调整大小、保持图像比例、增强 GUI
int flags = cv::WINDOW_NORMAL | cv::WINDOW_KEEPRATIO | cv::WINDOW_GUI_EXPANDED;
cv::namedWindow( winname, flags );
// 显示图像
cv::imshow( winname, img );
// 等待键盘输入
cv::waitKey( 0 );
// 关闭所有窗口
cv::destroyAllWindows();
return 0;
}