我正在探索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]
...,
每个数字表示什么?分组是如何完成的?
答案 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维。