在此,我們將簡要介紹 setWindowProperty() 函數及其來自 Python 編程語言的 OpenCV 包的工作示例。
您想動態更改窗口的參數嗎?然後,您必須檢查函數setWindowProperty(),它可以更改窗口的屬性。在本文中,我們將討論如何在 OpenCV 中使用setWindowProperty()。
用法:
cv2.namedWindow(windowsName, prop_value)
cv2.setWindowProperty(windowsName, prop_id, prop_value)
參數:
- windowsName:窗口名稱
- prop_id:要編輯的窗口屬性,例如 cv2.WINDOW_NORMAL、cv2.WINDOW_KEEPRATIO、cv2.WINDOW_FULLSCREEN 等。
- prop_value:窗口屬性的新值,例如 cv2.WND_PROP_FULLSCREEN、cv2.WND_PROP_AUTOSIZE、cv2.WND_PROP_ASPECT_RATIO 等。
逐步實施:
步驟1:首先,導入庫OpenCV和NumPy:
在此步驟中,我們隻需將所需的庫導入到工作 python 環境中,以便根據需要進一步使用其函數。
這裏,我們導入cv2和Numpy庫,cv2是OpenCV包,它幫助我們在環境中調用setWindowProperty()函數,此外,Numpy包負責隨機數學運算。
用法:
import cv2 import numpy
第2步:現在,創建一個無任何內容的函數來創建軌跡欄:
在此步驟中,我們將創建一個名為 Nothing 的函數,該函數可用作軌跡欄的回調函數。
下麵,我們使用createTrackbar()函數創建了一個軌跡欄,我們需要為其傳遞一些用戶定義的函數,createTrackbar()函數將根據該函數執行,因此我們創建了一個空函數。
def nothing(x): pass
步驟3:然後,創建一個帶有黑色圖像的窗口。
在此步驟中,我們返回指定大小的黑色新數組。這裏使用函數 numpy.zeros() 返回給定形狀和類型的新數組。
- shape :整數或整數序列
- dtype : 返回數組的數據類型
img = numpy.zeros((300, 512, 3), numpy.uint8)
步驟4:接下來,為您的 GUI 應用程序指定名稱。
在此步驟中,我們使用了 namedWindow() 函數,該函數用於創建一個具有合適名稱和大小的窗口,以在屏幕上顯示圖像和視頻。
- window_name:窗口名稱。
- prop_value:窗口屬性的新值,例如cv2.WND_PROP_FULLSCREEN、cv2.WND_PROP_AUTOSIZE、cv2.WND_PROP_ASPECT_RATIO等。
cv2.namedWindow(windowsName, prop_value)
第5步:設置 GUI 應用程序的屬性。
在此步驟中,我們將使用setWindowProperty()函數動態更改窗口的參數。
- windowsName:窗口的名稱。
- prop_id:要編輯的窗口屬性,例如cv2.WINDOW_NORMAL、cv2.WINDOW_KEEPRATIO、cv2.WINDOW_FULLSCREEN等。
- prop_value:窗口屬性的新值,例如cv2.WND_PROP_FULLSCREEN、cv2.WND_PROP_AUTOSIZE、cv2.WND_PROP_ASPECT_RATIO等。
cv2.setWindowProperty(windowsName, prop_id, prop_value)
第6步:此外,創建一個用於更改顏色的軌跡欄。
在此步驟中,我們使用了 createTrackbar() 函數,該函數用於在 OpenCV 中創建軌跡欄。
cv2.createTrackbar(‘color_track’, ‘image’, 0, 255, nothing)
第7步:此外,設置軌跡欄的最大值。
在此步驟中,我們使用了 setTrackbarPos() 函數來設置創建的軌跡欄在指定窗口中的位置。該函數不返回任何內容。
cv2.setTrackbarMax(‘color_track’, ‘image’, #Maximum-Value)
步驟8:稍後,創建一個循環來顯示圖像和軌跡欄。
在此步驟中,我們創建一個 while 循環,該循環持續運行,直到用戶按下 Escape 按鈕。
while(True):
步驟8.1:接下來,顯示圖像。
在此步驟中,我們將顯示您之前在步驟 3 中創建的黑色圖像。
cv2.imshow('image', img)
步驟8.2:然後,創建一個用於按下和更改窗口的按鈕。
在此步驟中,我們使用 waitkey 添加延遲並在用戶按“Escape”鍵時停止該函數。
k = cv2.waitKey(1) & 0xFF if k == 27: break
步驟8.3:此外,獲取軌跡欄的當前位置。
在此步驟中,我們使用了 getTrackbarPos() 函數,該函數返回指定軌跡欄的當前位置。該函數接受兩個參數,第一個參數是軌跡欄名稱,第二個參數是軌跡欄父窗口的名稱。
color = cv2.getTrackbarPos('color_track', 'image')
步驟8.4:現在,顯示顏色混合。
在這一步中,我們將根據軌跡欄改變黑色圖像的顏色。圖像的顏色從黑色變為白色。
img[:] = [color]
第9步:最後,關閉並銷毀所有窗戶。
在這一步中,我們最終將關閉迄今為止打開的所有窗口。它不接受任何參數,也不返回任何內容。
cv2.destroyAllWindows()
例子:
Python3
# Python program for setWindowProperty()
#Python OpenCV
# Importing the libraries OpenCV and numpy
import cv2
import numpy
# Create a function 'nothing' for creating trackbar
def nothing(x):
pass
# Creating a window with black image
img = numpy.zeros((300, 512, 3), numpy.uint8)
#Name the GUI app
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
#Set the properties of GUI app
cv2.setWindowProperty('image', cv2.WND_PROP_ASPECT_RATIO,
cv2.WINDOW_FULLSCREEN)
# Creating trackbars for color change
cv2.createTrackbar('color_track', 'image', 0, 255, nothing)
# Create a loop for displaying image and trackbar
while(True):
# Display the image
cv2.imshow('image', img)
# Create a button for pressing and changing
# the window
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
# Get current positions of trackbar
color = cv2.getTrackbarPos('color_track', 'image')
# Display color mixture
img[:] = [color]
# Close the window
cv2.destroyAllWindows()
輸出:

相關用法
- Python OpenCV setWindowTitle()用法及代碼示例
- Python OpenCV setTrackbarPos()用法及代碼示例
- Python OpenCV selectroi()用法及代碼示例
- Python OpenCV startWindowThread()用法及代碼示例
- Python OpenCV cv2.circle()用法及代碼示例
- Python OpenCV cv2.blur()用法及代碼示例
- Python OpenCV cv2.ellipse()用法及代碼示例
- Python OpenCV cv2.cvtColor()用法及代碼示例
- Python OpenCV cv2.copyMakeBorder()用法及代碼示例
- Python OpenCV cv2.imread()用法及代碼示例
- Python OpenCV cv2.imshow()用法及代碼示例
- Python OpenCV cv2.imwrite()用法及代碼示例
- Python OpenCV cv2.putText()用法及代碼示例
- Python OpenCV cv2.rectangle()用法及代碼示例
- Python OpenCV cv2.arrowedLine()用法及代碼示例
- Python OpenCV cv2.erode()用法及代碼示例
- Python OpenCV cv2.line()用法及代碼示例
- Python OpenCV cv2.flip()用法及代碼示例
- Python OpenCV cv2.transpose()用法及代碼示例
- Python OpenCV cv2.rotate()用法及代碼示例
- Python OpenCV cv2.polylines()用法及代碼示例
- Python OpenCV Canny()用法及代碼示例
- Python OpenCV destroyAllWindows()用法及代碼示例
- Python OpenCV Filter2D()用法及代碼示例
- Python OpenCV getgaussiankernel()用法及代碼示例
注:本文由純淨天空篩選整理自vin8rai大神的英文原創作品 Python OpenCV – setWindowProperty() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。