开发者社区> 问答> 正文

OpenCV numpy矩阵框架用零填充

我最近在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]]

...

展开
收起
一码平川MACHEL 2019-01-22 15:49:15 2696 0
1 条回答
写回答
取消 提交回答
  • read方法VideoCapture返回一个元组(ret, frame)。如果读取成功,那frame将是。因此,为了让您澄清运行代码时发生的情况,以下是您应该执行的操作:TrueframeFalse

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

    2019-07-17 23:26:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载