【发布时间】:2021-07-20 05:35:45
【问题描述】:
我是 opencv 和 python 的新手,正在从文档中学习基础知识。我正在学习 opencv (python) 中的跟踪栏。
我编写的代码与文档 here 中显示的代码相同。 (注意版本是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()
当我运行此代码时,我收到以下烦人的长警告:
Using 'value' pointer is unsafe and deprecated. Use NULL as value pointer. To fetch trackbar value setup callback.
如果有人想参考,这是完整的警告消息:
[ 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.
我试图理解它想要表达的意思,但不能理解太多。 AFAIU,错误在该行(及后续):
r = cv.getTrackbarPos('R','image')
即使认为这是一个警告,我也想去掉它,因为它使用了 unsafe 和 deprecated 这个词。
我有版本为4.5.3.56 的opencv-python。我已经尝试过查看文档,但似乎它们与旧版本的相同,并且在我的版本中已弃用此特定功能。
谁能建议我应该怎么做才能避免这种情况?
【问题讨论】:
-
嗯...我有 OpenCV 4.5.2 版,运行代码时根本看不到任何错误。这可能是一个新错误或您的配置中的其他原因导致它。您是从源代码构建还是获得了预构建版本?我的是从源代码构建的。
-
感谢@SeanWalker 抽出宝贵时间。我的是预制的。通过
pip install opencv-python安装。另外,我使用 opencv 4.5.2 在不同的 virtualenv 中尝试了相同的代码,但没有出现这样的警告。 -
听起来你应该向 OpenCV 提交错误报告。您可能发现了一个新问题。