1. 程式人生 > >OpenCV文件閱讀筆記-brief Creates a window官方解析及例項

OpenCV文件閱讀筆記-brief Creates a window官方解析及例項

目錄

官方解析

博主例子

官方解析

brief Creates a window

簡單建立一個視窗

這個函式可以建立一個視窗用來放圖片,更具圖片名來建立的視窗。 如果這個視窗的名字已經被建立,那麼這個函式將什麼也不會做。 可以通過呼叫cv::destroyWindow或cv::destroyAllWindows去關閉Windows上的視窗和釋放掉為視窗分配的記憶體。舉一個簡單的栗子,如果你建立了視窗,沒有呼叫這個函式,那麼這個視窗及其內部的資源都將會在關閉的時候被作業系統自動的釋放。

注意到! 他的第二個引數flages可以呼叫Qt的介面框架 -WINDOW_NORMAL與WINDOW_AUTOSIZE:WINDOW_NORAL能夠人使用者重新設定視窗的大小,反之WINDOW_AUTOSIZE是自動適應圖片大小從而調整視窗大學,也不能改變視窗的大小。 -WINDOW_FREERATIO與WINDOW_KEEPEATIO:WINDOW_FREERATIO不會按照比例去適應圖片大小,而WINDOW_KEEPRATIO可以儲存圖片的比例。 -WINDOW_GUI_NORMAL與WINDOW_GUI_EXPANDED:WINDOW_GUI_NORAL是老版本的建立介面的方式,這個方式沒有工具欄,狀態列,而WINDOW_GUI_EXPANDED是新的方式,當然他有工具欄和狀態列目

一般對這個引數進行這樣的騷操作:WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED

winname作為視窗的唯一標識,如果有重複,那麼當前的那個就會建立失敗! flags引數如下:

enum WindowFlags{
       WINDOW_NORMAL=0x00000000, //可以改變視窗的大小,但不能改變窗口裡面的內容,也可以把全屏的視窗切換為正常的大小;
       WINDOW_AUTOSIZE=0x00000001,//使用者不能改變視窗的大小,視窗的大小受圖片大小的影響;
       WINDOW_OPENGL=0x00001000,//後端呼叫opengl生成的介面
       WINDOW_FULLSCREEN=1,//把視窗轉化為全屏
       WINDOW_FREERATIO=0x00000100,//影象儘可能的填充視窗(不會按照比例)
       WINDOW_KEEPRATIO=0x00000000,//按照影象的比例進行展示
       WINDOW_GUI_EXPANDED=0x00000000,//狀態列和工具欄
       WINDOW_GUI_NORMAL=0x00000010,//老舊風格的視窗
};

博主例子

執行截圖如下:

原始碼如下:

#include <iostream>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/photo.hpp>

using namespace std;
using namespace cv;

int main(){

	//Similar to OpenCV2
	Mat image=imread("src1.jpg");

	namedWindow("image",WINDOW_GUI_EXPANDED);
	imshow("image",image);
	
	bool isExit=false;
	while(!isExit){
		char c=waitKey(0);
		switch(c){
		case '\x1b':
			cout<<"exit......"<<endl;
			isExit=true;
		}
	}
	destroyWindow("iamge");	//if you can do not call this function, it will be released automatically!
	return 0;
}