gpt4 book ai didi

python - 为什么我的 Trackbar 的值总是 -1

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:55 26 4
gpt4 key购买 nike

我想逐帧显示电影,并使用 Trackbars 对帧进行一些形态学操作。在创建相应的结构化元素之前,我需要指定其特征,例如长度、度数迭代次数

我的代码:

import cv2

video = cv2.VideoCapture('arsenal_spurs.mp4')
cv2.namedWindow('Trackbar strel')


def morphology_operations(val):
length = cv2.getTrackbarPos('length', 'Trackbar strel')
degrees = cv2.getTrackbarPos('degrees', 'Trackbar strel')
iter_num = cv2.getTrackbarPos('iterations', 'Trackbar strel')
print(length, degrees, iter_num)

return length, degrees, iter_num


cv2.createTrackbar('Length', 'Trackbar strel', 1, 50, morphology_operations)
cv2.createTrackbar('Degrees', 'Trackbar strel', 10, 180, morphology_operations)
cv2.createTrackbar('Iterations', 'Trackbar strel', 1, 10, morphology_operations)


while True:
ret, frame = video.read()
if ret:
morphology_operations(0)
cv2.imshow('frame', frame)
# keys to move through the frames
key = cv2.waitKey(1)
while key not in [ord('q'), ord('>')]:
key = cv2.waitKey(0)
if key == ord('q'):
break
else:
break

video.release()
cv2.destroyAllWindows()

当我运行代码时,我得到了 Trackbarsframe。然而,这三个变量的值总是-1。此外,当我将 Trackbars 拖动到不同的值时,我得到 -1 作为输出。

我在这里做错了什么?谢谢

enter image description here

最佳答案

我重新查阅了 OpenCV 上的文档 - 您对 getTrackbarPos 的使用是正确的。但我也注意到 Python 中 OpenCV 的 Trackbar 存在问题。在我之前的项目中,我使用以下技术克服了这些问题:每个轨迹栏 1 个函数,此函数在 createTrackbar 中声明为 lambda。在您的情况下,它可以是:

length=0
degrees=0
iter_num=0

def trackbar_length_callback(value):
global length
length = value
print(length)

def trackbar_degrees_callback(value):
global degrees
degrees = value
print(degrees)

cv2.createTrackbar('Length', 'Trackbar strel', 1, 50, lambda a: trackbar_length_callback(a))
cv2.createTrackbar('Degrees', 'Trackbar strel', 10, 180, lambda a: trackbar_degrees_callback(a))

等等。很可能,这是一个次优的解决方案,但您可以将其用作起点。

关于python - 为什么我的 Trackbar 的值总是 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58570310/

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