【发布时间】:2015-05-14 11:31:09
【问题描述】:
我是opencv的热心学习者,写了一段用opencv进行视频流的代码我想学习使用cv2.createTrackbar()来添加一些交互功能。虽然,我尝试了这个功能,但它对我不起作用:
对于流式传输和调整帧大小,我使用此代码
import cv2
import sys
import scipy.misc
import scipy
cap = cv2.VideoCapture(sys.argv[1])
new_size = 0.7 # value range(0,1) can be used for resizing the frame size
while(1):
ret, frame = cap.read()
frame = scipy.misc.imresize(frame, new_size)
cv2.imshow("t",frame)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
然后我像这样转换了上面的代码,以添加跟踪栏功能来调整框架的大小。
import cv2
import sys
import scipy.misc
import scipy
def nothing(x):
pass
cv2.createTrackbar('t','frame',0,1,nothing)
cap = cv2.VideoCapture(sys.argv[1])
while(1):
ret, frame = cap.read()
j = cv2.getTrackbarPos('t','frame')
frame = scipy.misc.imresize(frame, j)
cv2.imshow("t",frame)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
但此代码无法正常工作并最终出现以下错误:
me@ubuntu:~/Desktop/final_video_soft$ python GUI_STREAM.py p.3gp
Traceback (most recent call last):
File "GUI_STREAM.py", line 20, in <module>
frame = scipy.misc.imresize(frame, j)
File "/usr/lib/python2.7/dist-packages/scipy/misc/pilutil.py", line 365, in imresize
imnew = im.resize(size, resample=func[interp])
File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1305, in resize
im = self.im.resize(size, resample)
TypeError: must be 2-item sequence, not float
【问题讨论】:
-
“不工作”是什么意思?它是否显示错误?它是否给出了您不期望的输出?请更具体。
-
你能打印并显示
j的值吗? -
@a-Jays 是的,我之前检查过它为 j 打印“-1”。
-
它不应该是-1。在循环之前使用
setTrackBarPos()将其设置为1。这能解决问题吗? -
@a-Jays 我已经尝试过了,但发生了同样的错误
标签: python-2.7 opencv computer-vision