Opencv Python 中使用值指针是不安全且已弃用的错误

Jos*_*osh 5 python opencv image

我是 opencv 和 python 的新手,正在从文档中学习基础知识。我正在学习 opencv (python) 中的轨迹栏。

我编写了与此处文档中所示相同的代码。(注意版本是4.5.3)

这是我的代码:

import numpy as np
import cv2 as cv

def nothing(x):
    pass

# Create a black image, a window
img = np.zeros((300,512,3), np.uint8)

cv.namedWindow('image')

# create trackbars for color change
cv.createTrackbar('R','image',0,255,nothing)
cv.createTrackbar('G','image',0,255,nothing)
cv.createTrackbar('B','image',0,255,nothing)

# create switch for ON/OFF functionality
switch = '0 : OFF \n1 : ON'
cv.createTrackbar(switch, 'image',0,1,nothing)

while(1):
    cv.imshow('image',img)
    k = cv.waitKey(1) & 0xFF
    if k == 27:
        break
    # get current positions of four trackbars
    r = cv.getTrackbarPos('R','image')
    g = cv.getTrackbarPos('G','image')
    b = cv.getTrackbarPos('B','image')
    s = cv.getTrackbarPos(switch,'image')
    if s == 0:
        img[:] = 0
    else:
        img[:] = [b,g,r]
cv.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到以下恼人的长警告:

Using 'value' pointer is unsafe and deprecated. Use NULL as value pointer. To fetch trackbar value setup callback.
Run Code Online (Sandbox Code Playgroud)

如果有人想参考,这是完整的警告消息:

[ WARN:0] global C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-q3d_8t8e\opencv\modules\highgui\src\window.cpp (704) cv::createTrackbar UI/Trackbar(R@image): Using 'value' pointer is unsafe and deprecated. Use NULL as value pointer. To fetch trackbar value setup callback.
Run Code Online (Sandbox Code Playgroud)

我试图理解它想表达的意思,但理解不多。AFAIU,错误位于行(及后续行)中:

r = cv.getTrackbarPos('R','image')
Run Code Online (Sandbox Code Playgroud)

即使认为这是一个警告,我也想摆脱它,因为它使用了单词unsafeand deprecated

我有版本的 opencv-python 4.5.3.56。我尝试过阅读文档,但似乎它们与旧版本相同,并且这个特定功能在我的版本中已被弃用。

谁能建议我应该做什么来避免这种情况?

ber*_*rak 3

4.5.3 中的这个错误已经报告并修复了(至少对于 python 来说)

但是,除非您在本地重建它,否则您将不得不等待下一个 pypi 版本;(