如何捕获每个视频帧在Opencv中表示?

时间:2016-09-21 11:06:18

标签: python opencv numpy image-processing video-processing

我正在探索Opencv VideoCapture。我能够捕获并显示视频。我试图在控制台中打印每一帧。然后我得到一个长的numpy数组。该数组中的每个数字表示什么?是RGB值那个帧中的每个像素?

import numpy as np
import cv2
cap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,480)
while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()
    print len(frame)
    print frame
    cv2.imshow('frame',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

此代码将以下输出打印到控制台

480
[[[119 115 116]
 [119 115 116]
 [118 113 117]
 ..., 
 [170 167 163]
 [170 168 162]
 [170 168 162]]

 [[121 115 121]
 [121 115 121]
 [119 113 119]
 ..., 

每个数字表示什么?分组是如何完成的?

1 个答案:

答案 0 :(得分:0)

在上面的评论中由@nauer解决:

第一个元素[119,115,116]分别对应于第一行和第一列中像素(即像素[0,0])的蓝色,绿色和红色分量。每个颜色分量的范围是0到255。下一个元素对应于同一行中下一个像素的BGR颜色值,即[0,1]。元素[170 168 162]]对应于第一行[0,x]中的最后一个BGR值。 [[121 115 121]是第二行[1,0]中的第一个BGR颜色值。您有一个3维的数组。前两个对应于y和x坐标。第三个对应于3个BGR颜色分量。因此,灰度图像将仅具有2维。