如何将VideoCapture()读到的frame图片转变成PIL的Image图片格式或numpy格式,对opencv读取图片的颜色空间和数据格式不清楚?
先上结论:
图片读取函数 | 读取结果类型 | 颜色空间 |
---|---|---|
cv2.imread() | numpy.ndarray | BGR |
cv2.VideoCapture() | numpy.ndarray | BGR |
PIL(Python Image Library) | PIL.Image.Image | RGB |
opencv读取的图片不管是视频帧还是图片都是矩阵形式,即np.array,转PIL.Image格式用PIL.Image.fromarray()函数即可。
cap = cv2.VideoCapture(VIDEO_PATH)
while(1):
ret,frame =cap.read()
if ret==True:
print (type(frame)) #结果为numpy.ndarray
import matplotlib.pyplot as plt
from PIL import Image
plt.imshow(frame) #显示为BGR
plt.show()
frame2 = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
plt.imshow(frame2) #显示为RGB正常色
plt.show()
c