gpt4 book ai didi

python - OpenCV Trackbar,如何在轨迹栏窗口上显示最大值、最小值和当前值

转载 作者:行者123 更新时间:2023-12-02 06:45:28 27 4
gpt4 key购买 nike

如何在轨迹栏窗口上显示条的范围(最大、最小)和当前指向值?这是使用轨迹栏的示例。

# trackbar
import cv2
import numpy as np

def nothing(x):
pass

img = np.zeros((300,512,3), np.uint8)
cv2.namedWindow('image')

# Create trackbars

cv2.createTrackbar('R', 'image', 255, 255, nothing)
cv2.createTrackbar('G', 'image', 0, 255, nothing)
cv2.createTrackbar('B', 'image', 0, 255, nothing)

# Create switch for on/off

switch = '0: OFF \n1: ON'
cv2.createTrackbar(switch, 'image', 0, 1, nothing)

while(1):
cv2.imshow('image',img)
k = cv2.waitKey(1) & 0xFF
if k == 27: # 27 is Escape
break
r = cv2.getTrackbarPos('R','image')
g = cv2.getTrackbarPos('G','image')
b = cv2.getTrackbarPos('B','image')
s = cv2.getTrackbarPos(switch,'image')

if s == 0:
img[:] = 0

else:
img[:] = [b,g,r]

cv2.destroyAllWindows()

不显示值: enter image description here

最佳答案

我在一次大学事件中遇到了类似的情况。我做了一个解决方法,使用 cv.putText 方法将 BGR 轨迹栏的值放在图像窗口上。

我对R值执行的步骤(对于BG值来说是相同的):

  1. 创建函数update_R_value。将此函数传递给cv2createTrackBar方法。

  2. 在图像上放置可以显示 R 值的文本。初始值为 0(零)。假设我们将其放在 (x, y) 位置。

  3. 然后在 update_R_value 中,每次轨迹栏位置更改时我都会更改此文本值。

img = np.zeros((512,512,3), np.uint8)
bgr_track = {'B': 0, 'G': 0, 'R': 0} # Initial values of BGR

# Values of trackbar as text on image for R trackbar.
font = cv2.FONT_HERSHEY_SIMPLEX
img = cv2.putText(img, "R: ", (10, 330), font, 0.5, (255,255,255), 1)
img = cv2.putText(img, "0", (30, 330), font, 0.5, (255,255,255), 1)

def update_R_value(x):
global font, img, bgr_track
img = cv2.putText(img, f"{bgr_track['R']}", (30, 330), font, 0.5, (0,0,0), 1) # Fill previous text pixels with black
img = cv2.putText(img, f"{x}", (30, 330), font, 0.5, (255,255,255), 1) # Put new text with color white
bgr_track['R'] = x

注意:

在 OpenCV 中,当我们在图像上放置文本时,它只是更改该特定位置的像素值来使文本显示出来。它涉及跟踪以前的 BGR 值,因为 cv2.putText 不记录以前更改的像素值。

因此,为了更新新的轨迹栏值,首先我将前一个值的文本设置为黑色,然后将更新后的值设置为白色,并将新值保存在字典中以重复该过程。

对蓝色和绿色轨迹栏执行此操作后的完整输出如下:

Display BGR values

您还可以查看完整代码here .

谢谢。

关于python - OpenCV Trackbar,如何在轨迹栏窗口上显示最大值、最小值和当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32314087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com