Python OpenCV轨迹栏,如何在轨迹栏窗口上显示最大值、最小值和当前值
如何要求在轨迹栏窗口上显示条的范围(最大值、最小值)和当前指向值?下面是使用轨迹栏的示例Python OpenCV轨迹栏,如何在轨迹栏窗口上显示最大值、最小值和当前值,python,opencv,Python,Opencv,如何要求在轨迹栏窗口上显示条的范围(最大值、最小值)和当前指向值?下面是使用轨迹栏的示例 # 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) c
# 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()
其中不显示值:
无法指示与pos=0不同的最小值,但由于轨迹栏没有刻度标签,有时将第一个刻度重新解释为1(pos+1)是有用的。我的一次大学活动也遇到了类似的情况。我做了一个变通方法,使用
cv.putText
方法将BGR轨迹栏的值放在图像窗口上
我对R
值执行的步骤(对于B
和G
值将相同):
update\R\u value
。将此函数传递给cv2
的createTrackBar
方法
R
值的文本。初始值将为0(零)。假设我们把它放在(x,y)位置
update\u R\u value
中,每次更改轨迹栏位置时,我都会更改此文本值
img=np.zero((512512,3),np.uint8)
bgr#u track={'B':0,'G':0,'R':0}#bgr的初始值
#轨迹栏的值作为R轨迹栏图像上的文本。
font=cv2.font\u HERSHEY\u SIMPLEX
img=cv2.putText(img,“R:”,(10330),字体,0.5,(255255),1)
img=cv2.putText(img,“0”(30330),字体,0.5,(255255),1)
def更新值(x):
全局字体、img、bgr\u曲目
img=cv2.putText(img,f“{bgr_track['R']}”,(30330),字体,0.5,(0,0,0),1)#用黑色填充先前的文本像素
img=cv2.putText(img,f“{x}”,(30330),字体,0.5,(255255),1)#使用白色放置新文本
bgr_轨道['R']=x
注:
在OpenCV中,当我们在图像上放置文本时,只需更改该特定位置的像素值即可显示文本。它涉及跟踪以前的BGR值,因为cv2。putText
不记录以前更改的像素值
因此,为了更新新的轨迹栏值,首先我将一个文本的上一个值用黑色表示,然后将更新后的值用白色表示,并将新值保存在字典中以重复该过程
对蓝色和绿色轨迹栏执行此操作后的完整输出如下所示:
您还可以查看完整的代码
谢谢。你知道怎么做了吗?我也有同样的问题:(嗨,恐怕这个太旧了,我已经不记得了。对不起。