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