开发者社区> 问答> 正文

OpenCV numpy矩阵框架用零填充

python小能手 2019-01-22 15:49:15 516

我最近在Windows上使用Python 3.5.4下载了openCV 3.4.5。

我运行了这段基本代码来显示视频:

import cv2

cap = cv2.VideoCapture(0)

while(True):

# Capture frame-by-frame
ret, frame = cap.read()
print(frame)

# Display the resulting frame
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
    break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
我的笔记本电脑的网络摄像头显示了一段视频。
请注意,我从视频中打印每个帧,但在我的控制台输出中,每个numpy数组都用零填充。我不明白为什么会这样,因为视频正在运行

示例控制台输出

[[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]

[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]

[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]

...

计算机视觉 Python Windows
分享到
取消 提交回答
全部回答(1)
  • python小能手
    2019-07-17 23:26:18

    read方法VideoCapture返回一个元组(ret, frame)。如果读取成功,那frame将是。因此,为了让您澄清运行代码时发生的情况,以下是您应该执行的操作:TrueframeFalse

    更改while循环中的print语句,print(ret)然后再次运行代码
    如果ret值大部分或全部True,那么每个的读数frame通常都是成功的。这意味着frame数组实际上并不是空的,它们只是出于某种原因在打印输出中出现(例如,边缘上的所有值都是0,但是零件中的非零值会被点删除...)。如果然后将print语句更改为print(frame.sum()),则应该能够轻松地看到每个语句中至少有一些非零值frame
    如果ret值大部分是False,那么这意味着大多数Frames 的读入失败,这反过来意味着空数组是期望值。如果imshow在这种情况下仍然显示图像,那意味着真正发生了一些真正奇怪的事情。

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题