当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。