當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python OpenCV setWindowProperty()用法及代碼示例

在此,我們將簡要介紹 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()

輸出:



相關用法


注:本文由純淨天空篩選整理自vin8rai大神的英文原創作品 Python OpenCV – setWindowProperty() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。